leetcode 137 && 360一面算法 &&有道一面
2017-08-18 21:16
399 查看
题目描述:给一个数组,有一个数出现了两次或者1次,而其他数都出现了三次,找出这个数。其实对应了leetcode 137。
网上的解法多是位运算
有道给的是一个数出现了一次,其他数都出现了三次,找出这一个数,对应LeetCode137题!位运算
网上的解法多是位运算
public int singleNumber(int[] nums) { int ans = 0; for(int i = 0; i < 32; i++) { int sum = 0; for(int j = 0; j < nums.length; j++) { if(((nums[j] >> i) & 1) == 1) { sum++; sum %= 3; } } if(sum == 1) { ans |= sum << i; } if(sum == 2) { ans |= sum/2 << i } } return ans; }利用位运算,求每位1出现的次数,出现3次的最后加起来%3==0. !=0的要么是1次,要么是2次。分情况讨论就行。最后的| 或运算,很强哦。。。
有道给的是一个数出现了一次,其他数都出现了三次,找出这一个数,对应LeetCode137题!位运算
class Solution { public int singleNumber(int[] nums) { int length = nums.length; int result = 0; for(int i = 0; i<32; i++){ //int count = 0; int temp = 0; for(int j=0; j<length; j++){ temp+=(nums[j]>>i & 1); //count++; } //if(count %3==1) result |= (temp%3)<<i; } return result; } }当时写的时候出现了一点小小的问题,就是最后 | 的时候,忘记左移回来了。
相关文章推荐
- Leetcode算法学习日志-137 Single Number II
- 【LeetCode-面试算法经典-Java实现】【137-Single Number II(只字出一次的数字II)】
- 栈排序,只能使用额外的一个栈空间 && 有道一面
- 阿里菜鸟-算法(一面)
- 算法系列(12)LeetCode292 Nim Game
- Java for LeetCode 137 Single Number II
- leetcode136-137:single number
- leetcode:Reorder List (修改链表排列不改变值) 【面试算法题】
- 【LeetCode-面试算法经典-Java实现】【151-Evaluate Reverse Polish Notation(计算逆波兰式)】
- Leetcode 算法设计 第十四周
- python写算法题:leetcode: 6. ZigZag Conversion
- 算法分析与设计丨第六周丨LeetCode(9)——Course Schedule(Medium)
- 每周LeetCode算法题(二十)210. Course Schedule II
- 2014年有道研发岗算法题(9月17):数对之差
- 【LeetCode-面试算法经典-Java实现】【199-Binary Tree Right Side View(从右边看二叉树)】
- [算法分析与设计] leetcode 每周一题:132 Pattern
- 算法-KMP-leetcode-java
- python写算法题:leetcode: 12. Integer to Roman
- 算法分析与设计——LeetCode:136. Single Number
- LeetCode Linked List Cycle II(Floyd 判圈算法)