算法题思路

链表反转

思路

  1. 双链表头插法
  2. 利用栈

查找数组不重复的值

思路

  1. 利用异或运算 相同数值为0 任何职异或0为他本身的特性

计算质数

思路
首先依次判断2-n的各个数是否是质数

  1. 在暴力解法上优化,判断一个数是否是质数 只需要不能整除2到根号n之间的数就不是质数
  2. 2*n n大于1的数可以直接跳过肯定不是质数
    使用厄拉多塞筛法,质数的倍数肯定不是质数 在数组中依次质数的倍数排除 最后求出个数,为了节省空间可以使用bitarray

同构字符串

  1. 依次取两个字符串的字符 k存在就比较v和字符是否相同不同则不是同构字符串 不存在以k/v的形式放入map中
  2. 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;

回文串

  1. 反转字符串然后比较
  2. 双指针比较
  3. 1221 先取出第一个数和最后一个数比较 在取出22来取第一个和最后一个比较
原文地址:https://www.cnblogs.com/isnotnull/p/13852443.html