1. 顺序查找 (无序和有序均可) ```javascript function search(arr, target) { for (let i = 0; i < arr.length; i++) { if (arr[i] === target) {
    1. return i
    } } return -1; }

let arr = [1,2,3,4,5,6] console.log(search(arr, 10)) console.log(search(arr, 3))

  1. 2. 二分查找(有序)
  2. ```javascript
  3. function binarySearch(arr, target) {
  4. if (arr.length < 0) return -1;
  5. let start = 0;
  6. let end = arr.length - 1;
  7. while(start < end) {
  8. let mid = Math.floor((start + end) / 2)
  9. if (arr[mid] === target) {
  10. return mid;
  11. } else if (arr[mid] < target) {
  12. start = mid + 1;
  13. } else {
  14. end = mid - 1;
  15. }
  16. }
  17. }
  18. let arr = [1,2,3,4,5,6]
  19. console.log(search(arr, 10))
  20. console.log(search(arr, 3))

面试题

整数翻转。
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

  1. /*
  2. 123
  3. 321
  4. -123
  5. -321
  6. 120
  7. 21
  8. */
  9. // 解法1, 变成字符串处理
  10. function reverse(n) {
  11. let str = n.toString()
  12. let res = '';
  13. for (let i = str.length -1; i > -1; i--) {
  14. if (str[i] === '-') {
  15. res = str[i] + res;
  16. } else if (str[i] !== '0') {
  17. res += str[i]
  18. }
  19. }
  20. return parseInt(res);
  21. }
  22. // 解法2,
  23. function reverse(n) {
  24. let max = Math.pow(2, 31) - 1
  25. let min = -Math.pow(2, 31)
  26. let mid = `${n}`
  27. let result = ''
  28. let len = mid.length - 1
  29. for (let i = len; i > 0; i--) {
  30. result += mid[i]
  31. }
  32. if (mid[0] === '-') {
  33. result = mid[0] + result
  34. } else {
  35. result = result + mid[0]
  36. }
  37. // 转换成数字
  38. result = +result
  39. // 判断是否越界
  40. if (result > max || result < min) {
  41. return 0
  42. }
  43. return result
  44. }