- 浏览: 1461821 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
luhouxiang:
写的很不错,学习了
Extjs 模块化动态加载js实践 -
kingkongtown:
如果想改成淘宝后台那样,可以在编辑器批量上传图片呢?
kissy editor 阶段体会 -
317966578:
兄弟我最近也在整jquery和caja 开放一些接口。在git ...
caja 原理 : 前端 -
liuweihug:
Javascript引擎单线程机制及setTimeout执行原 ...
setTimeout ,xhr,event 线程问题 -
辽主临轩:
怎么能让浏览器不进入 文档模式的quirks模式,进入标准的
浏览器模式与文本模式
算法方面 有名的主要素问题:
找到一个数组中 出现 次数 超过一半数组大小的数
三种解法:
import java.util.Arrays; import java.util.ArrayList; /** * Author: yiminghe * Date: 2008-10-15 * Time: 19:33:34 * Any problem ,contact yiminghe@fudan.edu.cn. */ //找到一个数,它在数组中出现次数大于数组的大小一半 public class Majority { private static void swap(int[] array, int index1, int index2) { int t = array[index1]; array[index1] = array[index2]; array[index2] = t; } //以 array[start] 分隔 private static int partiton(int[] array, int start, int end) { int vindex = start; int v = array[start]; for (int i = start + 1; i <= end; i++) { if (array[i] < v) swap(array, ++vindex, i); } swap(array, vindex, start); return vindex; } //找到第 desire+1 大的数 private static int select(int[] array, int start, int end, int desire) { if (start == end) return array[start]; //升序 int q = partiton(array, start, end); if (q == desire) return array[desire]; if (q > desire) return select(array, start, q - 1, desire); else return select(array, q + 1, end, desire); } //中位数才有可能是,否则没有 O(n) 算法 public static int majority(int[] array) { int m = (array.length - 1) / 2; int middle = select(array, 0, array.length - 1, m); int count = 0; for (int i = 0; i < array.length; i++) { if (array[i] == middle) count++; } if (count > array.length / 2) return middle; return -1; } //是否占据一半 private static boolean isMajority(int[] array, int start, int end, int v) { int count = 0; for (int i = start; i <= end; i++) { if (array[i] == v) count++; } if (count > (end - start + 1) / 2) return true; return false; } // 不采用 元素比大小的方法 ,O(nlogn) public static int majorityNoEqual(int[] array, int start, int end) { if (end - start < 4) { for (int i = start; i <= end; i++) { if (isMajority(array, start, end, array[i])) return array[i]; } return -1; } int k = (start + end) / 2; int l = majorityNoEqual(array, start, k); if (l != -1 && isMajority(array, start, end, l)) return l; l = majorityNoEqual(array, k + 1, end); if (l != -1 && isMajority(array, start, end, l)) return l; return -1; } //一个很好的方法 ,不比较之间元素 ,O(n) public static int majorityNoEqual2(int[] array) { if (array.length < 4) { for (int i = 0; i < array.length; i++) { if (isMajority(array, 0, array.length - 1, array[i])) return array[i]; } return -1; } int k = (array.length) / 2; ArrayList<Integer> q = new ArrayList<Integer>(); for (int i = 0; i < k; i++) { if (array[2 * i] == array[2 * i + 1]) { q.add(array[2 * i]); } } int[] q_array = new int[q.size()]; for (int i = 0; i < q.size(); i++) q_array[i] = q.get(i); int q_m = majorityNoEqual2(q_array); // 必在 1/2 子数组 或 就是 最后一个元素 if (q_m != -1 && isMajority(array, 0, array.length - 1, q_m)) return q_m; if (isMajority(array, 0, array.length - 1, array[array.length - 1])) return array[array.length - 1]; return -1; } public static void main(String[] args) { int[] array = {2, 2, 2, 2, 2, 2, 19, 78, 6, 9, 4}; System.out.println(majority(array)); System.out.println(majorityNoEqual(array, 0, array.length - 1)); System.out.println(majorityNoEqual2(array)); } }
发表评论
-
构建前端 DSL
2012-10-11 22:10 5361目前在传统的软件开 ... -
circular dependency
2011-12-11 18:23 3925循环依赖是和语言无关 ... -
write html parser
2011-12-01 02:48 2918首先需要声明 html 不能用正则表达式来直接匹配进行内容抽取 ... -
转载:瀑布流布局浅析
2011-09-29 19:02 2847简介 如果你经 ... -
循环引用下的深度克隆
2011-08-04 20:39 2308深度复制和浅度复制 是当初初学 c 遇到的第一批问题,似乎使 ... -
开关状态信息的保存
2010-08-30 15:23 1682系统中常常会存在大量的状态信息,特别是0-1值信息,某个条件是 ... -
LL文法算法-1
2010-03-12 22:30 3472为了实现自顶向下的语法分析器,需要将文法的 1.左递归消 ... -
NFA到DFA的转换演示
2010-03-07 20:57 12731复习一下编译,在龙书中提到的NFA(不确定有穷自动机)到D ... -
gzip压缩实现注意
2010-01-18 22:19 0给你提点建议,你自己实现的compress不是很好哦,1. C ... -
三点共线判断
2010-01-12 19:43 14356经典的计算几何方面问题,判断二维坐标系中是否三个点在一条直线上 ... -
多维数组迭代器应用
2010-01-10 18:04 1717在代码之美中提到了这个问题,经常遇到嵌套数组的情况即多维数组情 ... -
google 开源项目
2009-12-28 20:25 0Google是支持开源运动的最大公司之一,它们现在总共发布 ... -
大数据量,海量数据 处理方法总结
2009-12-12 02:14 0最近有点忙,稍微空闲下来,发篇总结贴。 大数据量的问题是很 ... -
Bloom Filter Technical Report
2009-12-12 01:57 0Bloom Filter Technical Report ... -
找零问题
2009-10-31 16:07 2378问题描述: 有n美元需找零. 美 ... -
背包问题javascript演示
2009-10-26 16:28 2518背景: 经典递归示例:背包问题 ... -
hanoi问题求解
2009-10-19 23:54 0http://jnotnull.iteye.com/ ... -
后缀表达式的javascript转化演示
2009-10-19 23:46 1636复习经典算法,原算法:数据结构(用面向对象方法与c++描述) ... -
LCA In Javascript 演示
2009-10-05 17:24 1756理论: LCA 即 Least Common Anc ... -
Array.prototype.sort 稳定性问题
2009-09-16 13:49 2896引例 首先看一段代码: ...
相关推荐
随后的十余年中,科学家们通过光谱数据分析,核磁共振等技术手段,逐渐揭开了虫草素的分子结构之谜,最终确认其为3’-脱氧腺苷。 虫草素的生物合成路径一直是研究者关注的焦点。通过回顾研究历程,文章作者推测,...
这显示文章的研究是系统性的,从现状到问题分析再到解决对策,形成了完整的论证过程。 3. 标签解读: 从标签可知,文章的核心知识点是“露天煤矿”、“设备保养”、“预防”和“影响因素”。这意味着文章将在露天...
本文主要研究银行对中小微企业的信贷决策问题,通过数学建模和数据分析,建立了基于风险评估和信贷策略优化的模型。该模型考虑了中小微企业的信贷风险、企业实力、突发情况等因素,并使用 Excel 和 Matlab 软件进行...
#### 三、主要生产企业分析 全球纤维素市场的核心生产商包括IP、Suzano、APP、UMP和Stora Enso等。这些企业在纤维素生产方面拥有丰富的经验和先进的技术,其中IP是国际知名的纸浆和造纸巨头,Suzano则是巴西最大的...
随着全球对抗生素耐药性问题的关注度提高,多粘菌素的需求预计将保持上升。制造商需要不断创新,优化生产流程,提高产品质量,以满足日益增长的市场需求并应对激烈的市场竞争。同时,政策环境的变化和新研发的抗生素...
在市场分析部分,报告提供了全球纳米纤维素市场的规模、增长趋势以及主要参与者的信息。2020年,尽管受到全球经济波动的影响,纳米纤维素市场仍显示出稳健的增长态势,尤其在包装、复合材料和生物医学等领域的需求...
乙基纤维素行业是化工领域的一个分支,主要涉及乙基...综合以上分析,乙基纤维素行业未来投资前景乐观,但也面临着市场竞争加剧、技术更新快速等问题,投资者需深入理解行业特性和市场动态,以便做出明智的投资决策。
作业题目:网络流量分析程序设计起止日期:2020-10-29 08:00:00 ~ 2020-11-22 23:59:59作业满分:100作业说明:实现一个IP流量分析程序,具体要求:(1)Windows平台上,基于原始套接字,图形用户界面,编程语言不限...
报告中可能会分析主要生产国如中国、印度的产量变化,以及新兴市场的潜力。此外,青蒿素的市场结构、竞争格局、价格走势及供需平衡也是研究的重点。 四、研发与创新 为了应对疟原虫对青蒿素的耐药性问题,科研机构...
综合护理干预对无肝素血液透析患者的影响分析是一篇深入探讨专业医疗护理领域的研究文献。文章聚焦于无肝素血液透析治疗这一特定医疗过程,特别是肾衰竭患者的治疗,以及在这一过程中实施的综合性护理干预措施如何...
具体分析如下: 1. 半纤维素的特性与应用价值: 半纤维素是植物细胞壁的主要成分之一,与纤维素和木质素共同构成了植物组织的基本骨架。半纤维素在结构和功能上的多样性使其成为农林生物质资源中的一大亮点。它具有...
色彩部分主要以水粉教学为主,旨在提升学生对色彩的理解和分析,从而增强设计和创新能力。 课程目标旨在让学生掌握素描和色彩的基本理论、造型规律和艺术创作技巧,包括熟知素描历史、理解结构素描和创意素描概念、...
关键在于提升对技术问题的认识,复杂问题需深入分析,以确保细节的精准处理,避免责任推诿,促进团队协作。此外,推动技术创新和自动化应用,对新项目进行运行技术评估,确保了工艺的稳定性和效率。基础数据的收集和...