提交 47e88aac 编写于 作者: L liu13

20190225

上级 990149de
package code;
/*
* 190. Reverse Bits
* 题意:转换为二进制,反转,再输出
* 难度:Easy
* 分类:Bit Manipulation
* 思路:做位移操作,自己没想起来,好好看看
* Tips:注意 >>> 无符号位移 它不会将所处理的值的最高位视为正负符号,所以作位移处理时,会直接在空出的高位填入0
*/
public class lc190 {
public static void main(String[] args) {
System.out.println(reverseBits(10));
}
// you need treat n as an unsigned value
public static int reverseBits(int n) {
int result = 0;
for (int i = 0; i < 32 ; i++) {
result += n&1;
n >>>= 1; //无视符号右移
if(i<31) result<<=1;
}
return result;
}
}
package code;
/*
* 191. Number of 1 Bits
* 题意:统计二进制数中1的个数
* 难度:Easy
* 分类:Bit Manipulation
* 思路:每次移一位,与运算
* Tips:
*/
public class lc191 {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int sum = 0;
int a = 1;
while(a!=0){
int b = n&a;
if(b!=0) sum += 1;
a <<= 1;
}
return sum;
}
}
package code;
/*
* 202. Happy Number
* 题意:各位置上的数字循环求平方和,如果可以等于1,则为Happy Number
* 难度:Easy
* 分类:Hash Table, Math
* 思路:如果不会等于1,则会产生循环,用hashset记录之前是否出现过
* 也可利用判断链表是否有环的思路,一个计算一步,一个计算两步,看是会相等来判断
* Tips:
*/
import java.util.HashSet;
public class lc202 {
public boolean isHappy(int n) {
HashSet hs = new HashSet<Integer>();
hs.add(n);
int sum = 0;
while(true){
sum = 0;
while(n!=0){
sum += Math.pow(n%10,2);
n = n/10;
}
if(sum==1) return true;
else if(hs.contains(sum)) break;
hs.add(sum);
n = sum;
System.out.println(sum);
}
return false;
}
}
package code;
/*
* 204. Count Primes
* 题意:计算小于n的素数的个数
* 难度:Easy
* 分类:Hash Table, Math
* 思路:两个循环,相乘得到的数不是素数。
* Tips:
*/
public class lc204 {
public int countPrimes(int n) {
if(n<3) return 0;
boolean[] flags = new boolean[n];
int sum = 0;
for(int i=2; i<n; i++){
if(flags[i]==false) sum++; // 内循环已经计算过了
for(int j=2; i*j<n; j++){ // i*j<n
flags[i*j] = true;
}
}
return sum;
}
}
package code;
import java.util.HashSet;
/*
* 217. Contains Duplicate
* 题意:数组中是否有重复的数字
* 难度:Easy
* 分类:Array, Hash Table
* 思路:用Hashset记录是否有重复
* Tips:
*/
public class lc217 {
public boolean containsDuplicate(int[] nums) {
HashSet hs = new HashSet<Integer>();
for(int i=0; i<nums.length; i++){
if(hs.contains(nums[i])) return true;
hs.add(nums[i]);
}
return false;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册