面试算法题

1.只出现一次的数字

使用异或运算符,相同数字异或得0,将所有数字异或到一起,最后只剩下一个数字,就是只出现一次的数字。异或运算具有交换律(a^b^c=a^c^b)

2.多数元素

向上取整:比自己大的最小整数,用数学符号⌊⌋表示;向下取整:比自己小的最大整数,用数学符号⌈⌉表示;

eg:a=4.9,向上取整是5,向下取整是4

Array.sort( a ),对一个数组所有元素从小到大进行排列。

摩尔投票

3.搜索二维矩阵

(1)暴力解法(boolean是java中布尔数据类型,返回结果只有true和false)

(2)从矩阵的右上角

4.合并两个有序数组

  (1) 参照归并排序

(2)从大往小开始

5.验证回文字符串

  是一个正读反读都一样的字符串,例如level等。

  Character.isLetterOrDigit(int codePoint):确认指定字节是一个字母或数字。

  s.charAt( )返回指定位置的char值,s.charAt(0):检索s中第一个字符。

  toLowerCase( )将大写字母转换为小写字母。

(1)双指针解决法

(2)使用正则匹配

(3)使用递归方法实现

··6.单词拆分

     (1)DFS:深度优先遍历

   (2)BFS:广度优先遍历

   (3)动态规划

       思路的链接:https://leetcode-cn.com/problems/word-break/solution/shou-hui-tu-jie-san-chong-fang-fa-dfs-bfs-dong-tai/

     base case:递归的终止条件,当条件为真时,递归结束,没有base case的话将陷入无限循环。

 

 

 

 

 

 

posted @ 2021-10-01 20:38  代码小可爱  阅读(104)  评论(0)    收藏  举报