LeeCode-刷题日记-Day16

75. 颜色分类

使用任意一种排序即可解决。

(冒泡排序)

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var sortColors = function(nums) {
    if(nums.length===0) return nums;
    for(let i=0 ;i<nums.length;i++){
        for(let j=i+1;j<nums.length;j++){
            if(nums[i]>nums[j]){
                let temp=nums[i];
                nums[i]=nums[j];
                nums[j]=temp;
            }
        }
    }
    return nums;
};

56. 合并区间

先对于intervals的内容进行按照第一个字符进行排序,再比较第二个字符的大小。如果满足前一组数据的第二个字符小于当前数据的第一个字符,那么直接插入,为不相交区间。当大于时,比较前一组数据的第二个字符与当前数据的第二个字符的大小,取大的赋值给前一组数据的第二个字符。

/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
var merge = function(intervals) {
   const n=intervals.length;
   intervals.sort((a,b)=>a[0]-b[0]);
   const ans = [intervals[0]];
   for(let i = 1;i<n;i++){
       const pre = ans[ans.length-1];
       if(intervals[i][0]<=pre[1]){
           pre[1]= Math.max(intervals[i][1],pre[1]);
       }else{
           ans.push(intervals[i]);
       }
   }
   return ans;
};

706. 设计哈希映射

var MyHashMap = function() {
    this.ans = new Array();
};

/** 
 * @param {number} key 
 * @param {number} value
 * @return {void}
 */
MyHashMap.prototype.put = function(key, value) {
    for(let i=0;i<this.ans.length;i++){
        if(this.ans[i][0]===key){
            this.ans[i][1]=value;
            return ;
        }
    }
    this.ans.push([key,value]);
};

/** 
 * @param {number} key
 * @return {number}
 */
MyHashMap.prototype.get = function(key) {
    for(let i=0;i<this.ans.length;i++){
        if(this.ans[i][0]===key)
            return this.ans[i][1];
    }
    return -1;
};

/** 
 * @param {number} key
 * @return {void}
 */
MyHashMap.prototype.remove = function(key) {
    for(let i=0;i<this.ans.length;i++){
        if(this.ans[i][0]===key)
            this.ans.splice(i,1);
    }
};

/**
 * Your MyHashMap object will be instantiated and called as such:
 * var obj = new MyHashMap()
 * obj.put(key,value)
 * var param_2 = obj.get(key)
 * obj.remove(key)
 */

119. 杨辉三角 II

/**
 * @param {number} rowIndex
 * @return {number[]}
 */
var getRow = function(rowIndex) {
    let ans = new Array();
    ans.push([1]);
    ans.push([1,1]);
    if(rowIndex<2){
        return ans[rowIndex];
    }
    for(let i=2;i<=rowIndex;i++){
        ans.push([1]);
        for(let j=1;j<=i;j++){
            let k=ans[i-1][j]+ans[i-1][j-1];
            if(j===i) ans[i].push(1);
            else ans[i].push(k);
        }
    }
    return ans[rowIndex];
};

48. 旋转图像

/**
 * @param {number[][]} matrix
 * @return {void} Do not return anything, modify matrix in-place instead.
 */
var rotate = function(matrix) {
    let r=matrix.length;
    let l=matrix[0].length;
    let i=r-1;
    for(let j=0,k=r;j<l;j++,k++){
        matrix.push([matrix[i][j]]);
        for(i=r-2;i>=0;i--){
            matrix[k].push([matrix[i][j]]);
        }
        i=r-1;
    }
    matrix.splice(matrix[0],r)
};