- 巧用数组坐标
- 双指针
- 位运算,异或
- 取余
- 设置哨兵
- swap用加法或者异或的方法
- 空位置赋值或者查看用 cur==null? null:cur;
- StringBuffer的length是根据当前字符串的长度来确定,并非预先设置空间。
- 题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
斗牛场思想,过半人数,最后肯定那一个人是活着并且他们人数过半就是他了 - 做加法和字符串与数组之间转换的时候要注意溢出问题。
链接:https://www.nowcoder.com/questionTerminal/e8a1b01a2df14cb2b228b30ee6a92163?answerType=1&f=discussion
来源:牛客网
class Solution {
public:
int MoreThanHalfNum(vector<int> numbers) {
int n = 0;
int win;
for(size_t i=0;i<numbers.size();i++){
if(n == 0){
win = numbers[i];
n = 1;
}else{
if(win == numbers[i]){
n ++;
}else{
n--;
}
}
}
return win;
}
};
- 有效数值字符串的要求:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
1)e只能存在一次,且e不能在最后;
2)+,-只能有两种情况,在开头或者在挨着e之后;
3)小数点只能有一个,且只能在e之前;(记得用elseif) - 链表注意断表,操作引用注意是否会影响对象(若影响可以拷贝);