| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2562 人关注过本帖
标题:在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。 ...
只看楼主 加入收藏
hdk188
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-6-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。
求解
搜索更多相关主题的帖子: 查找 
2011-10-20 18:30
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:4 
先用strlen 统计数组个数           当满足大于等于左侧所有数,小于等于右侧所有数,的元素就输出


你应该懂的把

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-10-20 20:03
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:4 
回复 2楼 A13433758072
楼主说的是int 数组  我也只能想到O(n^2)的算法

                                         
===========深入<----------------->浅出============
2011-10-20 20:26
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:4 
借助两个辅助数组可以实现O(n)的算法

重剑无锋,大巧不工
2011-10-20 20:47
Y_Jo_1
Rank: 4
等 级:业余侠客
帖 子:59
专家分:215
注 册:2011-10-20
收藏
得分:4 
for循环,应该能解决
2011-10-20 21:18
一品谋士
Rank: 2
等 级:论坛游民
帖 子:26
专家分:36
注 册:2011-10-16
收藏
得分:4 
去搜一下分治法,很简单就解决了,分治法还可以用来快速排序
2011-10-20 21:27
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
送一段示例代码,函数find在数组及数组长度作为参数,返回满足要求的第一个元素的索引。如果不存在这样的元素,返回-1。
其实辅助数组有一个就可以了,不过为了阐明算法原理,没有做进一步的优化。
程序代码:
int find(int a[], int len)
{
    int *left, *right, i, max, min;
    left = (int *)malloc(len * sizeof(int) * 2);
    right = left + len;
    for(max = a[0], i = 0; i < len; i++)
    {
        if(max < a[i]) max = a[i];
        left[i] = max;
    }
    for(min = a[len - 1], i = len - 1; i >= 0; i--)
    {
        if(min > a[i]) min = a[i];
        right[i] = min;
    }
    for(i = 0; i < len && left[i] > right[i]; i++);
    free(left);

    return (i < len) ? i : -1;
}
我很想知道楼上如何用分治法解这个问题。期待中...

重剑无锋,大巧不工
2011-10-20 22:03
reyoungLee
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-11-19
收藏
得分:0 
小白想问下 楼上的算法只会返回一个值啊,但数组中可能有多个符合条件的数
2012-11-19 23:58
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:0 
抢分
时间 得分 当前总分 得分原因
2012-11-20 00:00:05 可用分 +10 可用分 315 每天回帖得可10个用分

WE GO
2012-11-20 00:00
快速回复:在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032606 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved