Skip to content
On this page

第一题:两数之和

  • 描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
  • 难度 简单
  • 实例:
nums = [2, 7, 11, 155],target = 9
因为nums[0] + nums[1] = 2 + 7 = 9
return [0, 1]
  • 解决方法
    暴力破解法:
js
function sumPlus(arr, target) {
  for(let i=0;i < arr.length;i ++) {
      let res = target - arr[i];
      for(let j = i + 1;j < arr.length;j ++) {
          if(arr[j] == res) {
              return [i, j];
          }
      }
  }
  return [];
}

取巧法:

js
function sumPlus(arr, target) {
  for(let i=0;i < arr.length;i ++) {
      let res = target - arr[i];
      if(arr.includes(res)) {
          return [i, arr.indexOf(res)];
      }
  };
  return [];
}

第二题:回文数

  • 描述
    判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数
  • 实例
    12321 true 123431 false -12321 false
  • 解决方法
js
function isPalintrome(num) {
  let arr = num.toString().split('');
  let arrTo = num.toString().split('').reverse();
  let res = arr.every((item, index) => {
      return item == arrTo[index];
  });
  return res;
}

第三题:无重复字符的最长子串

  • 描述
    给定一个字符串,找出其中不含有重复字符的 最长子串 和 长度
  • 实例

    输入: "abcabcbb"
    输出: 3
    解释: 无重复字符的最长子串是 "abc",其长度为 3。
    输入: "pwwkew"
    输出: 3
    解释: 无重复字符的最长子串是 "wke",其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串

    • 解决方法
    js
    function findMaxSon(str) {
        let cached = new Set();
        let rk = -1;
        let length = str.length;
        let result = '';
        let res = 0;
        for(let i = 0;i < length;i ++) {
          if(i !== 0) cached.delete(str.charAt(i - 1));
          while(rk + 1 < length && !cached.has(str.charAt(rk + 1))) {
            cached.add(str.charAt(rk + 1));
            rk ++;
          }
          if(res < rk + 1 - i) {
            result = str.slice(res, rk + 1 - i);
            res = rk + 1 - i;
          }
        }
        return {result, res};
    }