LeetCode Missing Number
2015-10-15 00:05
211 查看
原题链接在这里:https://leetcode.com/problems/missing-number/
题目:
Given an array containing n distinct numbers taken from
For example,
Given nums =
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
再刷时,感觉好极了!
与First Missing Positive相似。第一遍把nums[i]放到对应位置上,第二遍看谁不在对应位置上。
Time Complexity: O(n). Space: O(1).
AC Java:
第一种方法是 求和,然后挨个减掉,剩余的值就是结果,因为如果是全的,那么sum = n*(n+1)/2.
第二种方法是从前往后做bit Manipulation, res初始为0,每次保留结果 和 (i+1)^nums[i] 取结果,方法非常巧妙。
AC Java:
题目:
Given an array containing n distinct numbers taken from
0, 1, 2, ..., n, find the one that is missing from the array.
For example,
Given nums =
[0, 1, 3]return
2.
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
再刷时,感觉好极了!
与First Missing Positive相似。第一遍把nums[i]放到对应位置上,第二遍看谁不在对应位置上。
Time Complexity: O(n). Space: O(1).
AC Java:
public class Solution { public int missingNumber(int[] nums) { if(nums == null || nums.length == 0){ return 0; } for(int i = 0; i<nums.length; i++){ if(nums[i] >= 0 && nums[i] < nums.length && nums[i] != nums[nums[i]]){ swap(nums, i, nums[i]); i--; } } for(int i = 0; i<nums.length; i++){ if(nums[i] != i){ return i; } } return nums.length; } private void swap(int [] nums, int i, int j){ int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } }
第一种方法是 求和,然后挨个减掉,剩余的值就是结果,因为如果是全的,那么sum = n*(n+1)/2.
第二种方法是从前往后做bit Manipulation, res初始为0,每次保留结果 和 (i+1)^nums[i] 取结果,方法非常巧妙。
AC Java:
public class Solution { public int missingNumber(int[] nums) { /* //Method 1 if(nums == null || nums.length == 0){ return 0; } int n = nums.length; int sum = 0; for(int i = 0; i<nums.length; i++){ sum+=nums[i]; } return n*(n+1)/2 - sum; */ //Method 2 if(nums == null || nums.length == 0){ return 0; } int res = 0; for(int i = 0; i<nums.length; i++){ res ^= (i+1)^nums[i]; } return res; } }
相关文章推荐
- Emacs 系列(二):org 模式介绍
- Java实现的贷款金额计算功能示例
- Linux tcpdump命令详解大全
- 零基础入门篇之Linux及Arm-Linux程序开发笔记
- Linux 中 CURL常用命令详解
- jsp中page指令用法详解
- JSP简单添加,查询功能代码
- Python爬虫正则表达式常用符号和方法
- 基于Python正则表达式提取搜索结果中的站点地址
- 为ASP.NET MVC及WebApi添加路由优先级
- ASP.NET MVC 3实现访问统计系统
- asp.net中如何批量导出access某表内容到word文档
- 使用Python解析JSON数据的基本方法
- 深入解析Python编程中JSON模块的使用
- 详细解读Python中解析XML数据的方法
- Python中将字典转换为XML以及相关的命名空间解析
- 简单介绍使用Python解析并修改XML文档的方法
- PHP+Mysql+jQuery实现发布微博程序 php篇
- php cli配置文件问题分析
- PHP面试题之文件目录操作