Google算法题:M-寻找缺失的数
来源:互联网 发布:淘宝客链接手机端转换 编辑:程序博客网 时间:2024/06/06 18:40
http://www.jiuzhang.com/article/Google%202016%E5%B9%B412%E6%9C%88%20SDE%20Onsite%E9%9D%A2%E7%BB%8F/
http://www.lintcode.com/zh-cn/problem/find-the-missing-number/
http://www.jiuzhang.com/solutions/find-the-missing-number/
给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数。
样例
N = 4
且序列为 [0, 1, 3]
时,缺失的数为2
。
挑战
在数组上原地完成,使用O(1)的额外空间和O(N)的时间。
方法一:利用下标与值的关系,将和下标相同的值放到对应下标下,没有匹配下标的就是缺失值
方法二:利用数学特性
public class Solution { /** * @param nums: an array of integers * @return: an integer */ public int findMissing(int[] nums) { // write your code here if(nums==null || nums.length==0) return -1; //return find_by_exchange(nums); return find_by_math(nums); } public int find_by_exchange(int[] nums){ int n = nums.length; int i=0; while(i<n){ while(nums[i]!=i && nums[i]<n){ int t=nums[i]; nums[i]=nums[t]; nums[t]=t; } i++; } for(int j=0; j<n; j++){ if(nums[j]!=j) return j; } return n; } public int find_by_math(int[] nums){ int n = nums.length; int sum=0; for(int t:nums){ sum+=t; } return (0+n)*(n+1)/2-sum; }}
阅读全文
0 0
- Google算法题:M-寻找缺失的数
- [算法学习]寻找缺失的数
- 寻找缺失的数
- 寻找缺失的数
- 寻找缺失的数
- 寻找缺失的数
- 寻找缺失的那个数
- LintCode-寻找缺失的数
- LintCode 寻找缺失的数
- 寻找缺失的数-LintCode
- LintCode 寻找缺失的数
- LinkCode-寻找缺失的数
- LintCode -- 寻找缺失的数
- 题目:寻找缺失的数
- lintcode ----寻找缺失的数
- lintcode --寻找缺失的数
- 寻找缺失的数-LintCode
- LintCode 寻找缺失的数
- Android圆形头像设置(实现相机、相册选择并裁剪)兼容6.0/7.0
- linux定时任务的设置 crontab 配置指南
- app测试要点(3)
- idea从svn上导入项目
- 修改Tomcat Connector运行模式,优化Tomcat运行性能
- Google算法题:M-寻找缺失的数
- SSM框架Spring 详解 No.1
- 多文件修改文件名;
- 第二十一篇:并发新特性—阻塞队列和阻塞栈(含代码)
- ping百度(外网)出现:unknown host www.baidu.com问题解决
- Java程序员常见的10道XML面试题
- 小程序支付后发送模板消息
- 萌新瑟瑟发抖
- lightoj 1205(回文数的数量 数位dp)