leetcode Day15 哈希表

112 阅读1分钟

12. 整数转罗马数字

var intToRoman = function(num) {
    const valueSymbols = [[1000, "M"], [900, "CM"], [500, "D"], [400, "CD"], [100, "C"], [90, "XC"], [50, "L"], [40, "XL"], [10, "X"], [9, "IX"], [5, "V"], [4, "IV"], [1, "I"]];
    const roman = [];
    for (const [value, symbol] of valueSymbols) {
        while (num >= value) {
            num -= value;
            roman.push(symbol);
        }
        if (num == 0) {
            break;
        }
    }
    return roman.join('');
};

36. 有效的数独

var isValidSudoku = function(board) {
    let arr2=[]
    for(let i=0;i<9;i++){
        arr2[i]=new Map()
    }
    for(let i=0;i<9;i++){
        let arr=[]
        let arr1=[]
        for(let j=0;j<9;j++){
            if(board[i][j]!=='.'){
                if(arr.includes(board[i][j])){
                    return false
                }
                arr.push(board[i][j])
            }
            if(board[j][i]!=='.'){
                if(arr1.includes(board[j][i])){
                    return false
                }
                arr1.push(board[j][i])
            }
            if(board[i][j]!=='.'){
                let s=parseInt(i / 3) * 3 + parseInt(j / 3)
                if(arr2[s].has(board[i][j])){
                    return false
                }
                else{
                    arr2[s].set(board[i][j], 1)
                }
            }
        }
    }
    return true
};

49. 字母异位词分组

var groupAnagrams = function(strs) {
    let map=new Map()
    let res=[]
    for(let i=0;i<strs.length;i++){
        let k=strs[i].split('').sort().join('')
        if(map.has(k)){
            map.set(k,map.get(k)+' '+strs[i])
        }
        else{
            map.set(k,strs[i])
        }
    }
    for(let [key,value] of map){
        res.push(value.split(' '))
    }
    return res
};

128. 最长连续序列

var longestConsecutive = function (nums) {
  const set = new Set(nums);
  let max = 0;
  for (let [key,a] of set.entries()) {
    if (!set.has(a - 1)) {
      let count = 1;
      let cur = a;
      while (set.has(cur + 1)) {
        cur++;
        count++;
      }
      max = Math.max(max, count);
    }
  }
  return max;
};