leetcode 137. Single Number II
来源:互联网 发布:黑客攻击软件 编辑:程序博客网 时间:2024/06/05 23:57
Given an array of integers, every element appears three times except for one, which appears exactly once. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
也许有着更好地位运算的做法,但是我肯定是想不到了。在这里我是用HashMap来做,效果应该不错。
建议和这一道题leetcode 260. Single Number III 位操作 和 leetcode 136. Single Number 位操作
代码如下:
import java.util.Arrays;import java.util.HashMap;import java.util.Iterator;import java.util.Map;/* * 使用Hash来做,要比使用Sort做快一点 * */public class Solution{ public int singleNumber(int[] nums) { if(nums==null || nums.length<=0) return 0; Map<Integer, Integer> map=new HashMap<Integer, Integer>(); for(int i=0;i<nums.length;i++) map.put(nums[i], map.getOrDefault(nums[i], 0)+1); Iterator<Integer> iter=map.keySet().iterator(); while(iter.hasNext()) { int key=iter.next(); if(map.get(key)!=3) return key; } return 0; } /* * 这是用排序做得 * */ public int singleNumberBySort(int[] nums) { if(nums==null || nums.length<=0) return 0; Arrays.sort(nums); int number = 0; boolean flag = true; for(int i = 0 ; i<nums.length-2 ; i++) { if(nums[i] == nums[i+1] && nums[i+1] == nums[i+2]) i+=2; else { if(nums[i]==nums[i+1]) number = i + 2; else number = i; flag=false; break; } } if(flag) number = nums.length-1; return nums[number]; }}
下面是C++的做法,本体应该可以通过运算来实现的,但是我更喜欢使用排序或者map计数来实现
代码如下:
#include <iostream>#include <vector>#include <algorithm>#include <string>#include <map>#include <climits>using namespace std;class Solution {public: int singleNumber(vector<int>& nums) { map<int, int> mmp; for (int key : nums) { if (mmp.find(key) == mmp.end()) mmp[key] = 1; else mmp[key] += 1; } for (map<int, int>::iterator i = mmp.begin(); i != mmp.end(); i++) { if (i->second == 1) return i->first; } return 0; }};
阅读全文
0 0
- [LeetCode]*137.Single Number II
- LeetCode 137. Single Number II
- [Leetcode] 137. Single Number II
- Leetcode 137. Single Number II
- Leetcode - 137. Single Number II
- 【LeetCode】137. Single Number II
- 137. Single Number II LeetCode
- [LeetCode]137. Single Number II
- [LeetCode]137. Single Number II
- LeetCode 137. Single Number II
- LeetCode *** 137. Single Number II
- [LeetCode]137. Single Number II
- leetcode 137. Single Number II
- LeetCode 137. Single Number II
- LeetCode - 137. Single Number II
- 137. Single Number II LeetCode
- LeetCode 137. Single Number II
- [leetcode] 137. Single Number II
- 递归和循环
- 表单标签-注册(类比搜狐)
- ==Tomcat的坑==【一切正常,就是连不上数据库,提示密码错误】。解决:先关闭Tomcat,再重启eclipse。老师说是Tomcat卡住了。
- IntelliJ IDEA使用(2)——IDEA配置Tomcat
- JavaWeb学习路线
- leetcode 137. Single Number II
- listview在主活动的oncreate方法中的使用案例
- Shell脚本:命令选项参数处理
- Git学习笔记六:Git自动忽略文件
- 字符串<=>数组
- SGISTL源码探究-pair的实现
- 项目三 求集合并集
- MATLAB修改默认工作路径
- SVM算法实例解析及应用