算法题思路
链表反转
思路
- 双链表头插法
- 利用栈
查找数组不重复的值
思路
- 利用异或运算 相同数值为0 任何职异或0为他本身的特性
计算质数
思路
首先依次判断2-n的各个数是否是质数
- 在暴力解法上优化,判断一个数是否是质数 只需要不能整除2到根号n之间的数就不是质数
- 2*n n大于1的数可以直接跳过肯定不是质数
使用厄拉多塞筛法,质数的倍数肯定不是质数 在数组中依次质数的倍数排除 最后求出个数,为了节省空间可以使用bitarray
同构字符串
- 依次取两个字符串的字符 k存在就比较v和字符是否相同不同则不是同构字符串 不存在以k/v的形式放入map中
for (int i = 0; i < chars.length; i++) { if (arr[chars[i]] != arr2[chars1[i]]) { return false; } arr[chars[i]] = i+1; arr2[chars1[i]] = i+1; } return true;
回文串
- 反转字符串然后比较
- 双指针比较
- 1221 先取出第一个数和最后一个数比较 在取出22来取第一个和最后一个比较