目录:
1.Number of 1 Bits - 计算二进制1的个数 [与运算]
2.Contains Duplicate - 是否存在重复数字 [遍历]
3.Reverse Integer - 翻转整数 [int边界问题]
4.Excel Sheet Column Number - Excel字符串转整数 [简单]
5.Power of Two & Happy Number - 计算各个位数字 [%10 /10]
一.Number of 1 Bits
题目概述:
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11' has binary representation
00000000000000000000000000001011
so the function should return 3.
解题方法:
三种方法包括:
1.依次和0x1进行&与运算,若结果为1则加1,表示1个数,再右移;
2.推荐的方法,n&(n-1),直到为0,次数为1的个数;
3.n取2模,依次判断个位是否为1,在n/2移位,常规方法。
其中uint32_t为32位无符号类型数据,参考地址
Power of Two题目也可以通过return (n > 0) && (!(n & (n - 1)))一句话实现。
Reverse Bits题目也可以<<移位实现。
我的代码:
二.Contains Duplicate
题目概述:
Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
题目解析:
题目是给定一个整数数组,判断该数组中是否存在重复的数字。简单AC的方法比较简单,两层循环判断;但是如果要求是O(n)的时间和O(1)的空间,怎样实现呢?腾讯的笔试题就考到了。又见重复判断II III题。
我的代码:
三.Reverse Integer
题目概述:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
解题思路:
该题主要是考察整数的翻转问题,最简单的方法就是:通过"%10"计算个位数字和"/10"循环进行,直到整数为结果0;但是你需要注意的是:
1.负数的转换x=x*(-1)
2.整数越界,int型范围是(-2147483648~2147483647),4字节。当x=1534236469时,应该输出0而不是9646324351或溢出后的数
3.需要注意一个特殊的用例:x=-2147483648。此时x=x*(-1)=2147483648溢出,结果应是0。
故此处需要把整数范围的判断指定出来讲解,没考虑整数溢出的代码如下:
四.Excel Sheet Column Number
题目概述:
Related to question Excel Sheet Column Title
Given a column title as appear in an Excel sheet, return its corresponding column number.
For example:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
题目解析:
该类题目比较简单,主要考察字符串遍历和整数进制问题(26进制),自己一次AC。
五.Power of Two & Happy Number
题目概述:
判断数字是否是2的次数数
判断数字是否是happy数,结果为1则返回true
Example: 19 is a happy number
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
主要考察计算数字每个位数的方法,即n%10和n=n/10的方法。
我的代码:
Power of Two
强推位操作判断16=10000即高位为1其他为0,或通过一句话即可:
return (n >0) && (!(n & (n -1)))
http://www.bubuko.com/infodetail-953320.html
Happy Number
PS:最后希望文章对您有所帮助,这都是自己A题的一些笔记和心得,同时真心建议你自己动手做做LeetCode。以前我也不信邪,现在信了~