leetcode 137 && 360一面算法 &&有道一面

简介:

题目描述:给一个数组,有一个数出现了两次或者1次,而其他数都出现了三次,找出这个数。其实对应了leetcode 137。


网上的解法多是位运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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题!位运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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; 
     }
}

当时写的时候出现了一点小小的问题,就是最后 | 的时候,忘记左移回来了。



本文转自 努力的C 51CTO博客,原文链接:http://blog.51cto.com/fulin0532/1957485

相关文章
|
6月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
198 0
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
393 4
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
254 2
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
348 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
224 6
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
254 2
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
229 1
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
262 1
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
335 0

热门文章

最新文章