Majority Element
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.
You may assume that the array is non-empty and the majority element always exist in the array.
1 | class Solution { |
Reverse Linked List
反转链表1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(head==NULL)
return NULL;
if(head->next==NULL)
return head;
ListNode*p=head->next;
ListNode*pre=head;
head->next=NULL;//记得把第一个的next设置为NULL
while(p->next!=NULL)
{
ListNode* temp=p->next;
p->next=pre;
pre=p;
p=temp;
}
p->next=pre;
return p;
}
};
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
2
3
4
5
6
7
8
9
10
11 int hammingWeight(uint32_t n)
{
int count=0;
for(int i=31;i>=0;i--)
{
int k=(n>>i)&1;
if(k)
count++;
}
return count;
}
解法二
每当n&(n-1)一次,n就会少一位1(最后一位1没了)1
2
3
4
5
6
7
8
9
10
11
12class Solution {
public:
int hammingWeight(uint32_t n) {
int count=0;
while(n!=0)
{
n=n&(n-1);
++count;
}
return count;
}
};
Power of Two
Given an integer, write a function to determine if it is a power of two.
如果n是2的指数,则n的二进制表达中只有一个1,可以通过上题解决1
2
3
4
5
6
7
8
9
10class Solution {
public:
bool isPowerOfTwo(int n) {
if(n<=0)
return false;
if(n&(n-1))
return false;
return true;
}
};
Power of Three
Given an integer, write a function to determine if it is a power of three.
Follow up:
Could you do it without using any loop / recursion?
如果不是3的指数,则求出的幂指数不为整数,如12,求出的幂指数为2.26186,则 2.26186-int(2.26186)不为0;1
2
3
4
5
6
7
8
9
10
11class Solution {
public:
bool isPowerOfThree(int n) {
if(n<=0)
return false;
double k=log10(n)/log10(3);
if(k-int(k)==0)
return true;
return false;
}
};
判断浮点数的大小关系时,首先要判断他们是否相等,不相等再判断大小关系。例如A>B,不一定就是A大于B,有可能他们相等。1
2
3
4int dequals(double a, double b)
{
return fabs(a-b) < 0.000001;
}