两算法:求数组元素出现次数和求子数组最大和
2012-07-15 15:31
281 查看
一. 求数组元素出现次数
给出一含有十个数的数组,构建一新数组,要求新数组中的每个数是先前数组中相对应元素在新数组中出现的次数。
给出数组为:
[0,1,2,3,4,5,6,7,8,9]
举一个例子,
数值: 0,1,2,3,4,5,6,7,8,9
分配: 6,2,1,0,0,0,1,0,0,0
0在出现了6次,1在出现了2次,
2在出现了1次,3在出现了0次....
以此类推..
思路:采用假设检验法
二. 求子数组最大和
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
给出一含有十个数的数组,构建一新数组,要求新数组中的每个数是先前数组中相对应元素在新数组中出现的次数。
给出数组为:
[0,1,2,3,4,5,6,7,8,9]
举一个例子,
数值: 0,1,2,3,4,5,6,7,8,9
分配: 6,2,1,0,0,0,1,0,0,0
0在出现了6次,1在出现了2次,
2在出现了1次,3在出现了0次....
以此类推..
思路:采用假设检验法
class BottomNum { private $top = array(); //给出的数组 private $bottom = array(); //要求构建的新数组 private $success = false; //检验是否成功 function __CONSTRUCT() { for($i=0;$i<10;$i++) { $this->top[$i] = $i; $this->bottom[$i] = 0; } } function getBottom() { while(!$this->success) { $this->success = $this->setBottom(); } var_dump($this->bottom); } function setBottom() { $result = true; for($i=0;$i<10;$i++) { $fre = $this->getFrequecy($i); if($fre != $this->bottom[$i]) //检验失败 { $this->bottom[$i] = $fre; $result=false; } } return $result; } function getFrequecy($num) { $count=0; for($i=0;$i<10;$i++) { if($this->bottom[$i]==$num) ++$count; } return $count; } } $bottomNum = new BottomNum(); $bottomNum->getBottom();
二. 求子数组最大和
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
function subMaxSum($array) { $sum=0; $tmp=0; foreach($array as $v) { $tmp=$tmp+$v; if($tmp>$sum){ $sum=$tmp; } elseif($tmp<=0) { $tmp=0; } } echo $sum; }
相关文章推荐
- java找出一个数组中出现次数最多且最大的那个元素
- 求一个数组中重复元素出现最多值,最大的元素及出现次数,次数相同时,取最大值,优先考虑次数
- 求一个数组中重复元素出现最多值,最大的元素及出现次数,次数相同时,取最大值,优先考虑次数
- 任意给定一整数数组,求两个元素之差的最大值和数组中出现次数最多的数
- 华为机试—整型数组中出现次数最多的元素
- 找出数组中出现次数超过一半或者超过1/3的元素
- 在有序数组中,统计某一元素出现的次数
- java 统计数组中各元素出现的次数
- 从有n个元素的数组中找出出现次数大于n/3次的元素
- JavaScript 数组去重并统计重复元素出现的次数
- 通过一个数组找到每个元素对应出现的次数
- Top K Frequent Elements 选出数组中出现次数最多的k个元素
- 用HashMap实现args参数中的元素每个元素出现的次数以及出现的最大次数和最小次数
- 找出数组里面元素出现次数最多的问题
- 统计数组 arr 中值等于 item 的元素出现的次数
- 给定一个整数数组,其中元素的取值范围为0到10000,求其中出现次数最多的数
- 随机生成长度为100的数组,数组元素为1到10,统计出现次数最多和最少的元素
- Java实现——求整数数组中出现次数超过数组长度一半的元素
- 求数组元素出现的次数
- 整型数组中出现次数最多的元素