LeetCode簡單演算法題目-JS解法

flyMusk發表於2019-03-24

1. 兩數之和

var twoSum = function(nums, target) {
    var arr=[];
    for(var i=0;i<nums.length;i++){
        for(var j = i+1;j<nums.length;j++){
            if(nums[j] === target - nums[i]){
                arr.push(i);
                arr.push(j);
                return arr;
            }
        }
    }
};
複製程式碼

雙層迴圈,從第1個開始外層迴圈,內層迴圈從1個以後的數開始,以此類推。

會迴圈每兩個數構成的一對組合。

7. 整數反轉

兩種方法  

 1.可以用js的陣列反轉

 2.用%10來從最後一位反轉

function judge(arr){
    for(var i = 0;i<arr.length;i++){
            if(arr[i]==0){
                arr.unshift();
            }else{
                return arr;
            }
        }
}

var reverse = function(x) { 
    console.log(Math.pow(2,31)-1);
    if(x<=(Math.pow(2,31)-1)&&x>=Math.pow(-2,31)){
            x = x.toString();
        if(x>0){
            var arr = x.split("").reverse();
            console.log(arr)
            judge(arr);
            x = arr.join("")*1; 
            if(x<=(Math.pow(2,31)-1)&&x>=Math.pow(-2,31) ){
                               return x;

               }else{
                   return 0;
               }
        }else if(x<0){
            var arr = x.split("").reverse();
            console.log(arr)
            arr.pop();
           judge(arr);
            console.log(arr)
            arr.unshift("-");
            x = arr.join(""); 
           if(x<=(Math.pow(2,31)-1)&&x>=Math.pow(-2,31) ){
                               return x;

               }else{
                   return 0;
               }
        }else if(x==0){
            return 0;
        }
    }else{
        return 0;
    }
};




複製程式碼

  function reverse1(x){
        var num = 0,sum=0;
        var  len = typeof(x)== "string" ? x.length  : x.toString().length;
        for(var i=0;i<len;i++){
            if(x<10){
                num = x%10;
                sum = sum+num;
                if((sum*1) < Math.pow(-2,31) || (sum*1) >( Math.pow(2,31)-1)){
                    return 0;
                }else{
                    return sum;
                }
            }
            num = x%10;
            x = Math.floor(x/10);
            sum = (sum+num)*10;
        }
    }
var reverse = function(x) {
    if(x < Math.pow(-2,31) || x >( Math.pow(2,31)-1)){
            return 0;
        }else {
            if(x>0){
                var str=  reverse1(x);
                return str;
            }else if(x===0){
                return 0;
            }else if(x<0){
                var arr = x.toString().split("");
                arr.shift();
                var str = arr.join("");
                var str2 = "-"+reverse1(str);
                return str2;
            }
        }
};
複製程式碼


9. 迴文數

var isPalindrome = function(x) {
    if(x<0){
        return false;
    }else if(x==0){
        return true;
    }else if(x>0){
        x1 = x.toString();
        var arr = x1.split("");
        arr1 = arr.reverse().join("");
        if(x1 == arr1){
            return true;
        }else{
            return false;
        }
    }
};


複製程式碼

26. 刪除排序陣列中的重複項

var removeDuplicates = function(nums) {
    if(nums.length ==0){
        return 0;
    }
    var i = 0,k=0;
    for(var j=1;j<nums.length;j++){
        if(nums[i] !== nums[j]){   
            i++;
            nums[i]=nums[j];
        }
    }
    return i+1;
};
複製程式碼

27. 移除元素

var removeElement = function(nums, val) {
    var x = 0;
    for(var i=0;i<nums.length;i++){
        if(nums[i] != val){
            nums[x]=nums[i];
            x++;
        }
    }
    return x;
};
複製程式碼

35. 搜尋插入位置

var searchInsert = function(nums, target) {
    for(var i=0;i<=nums.length;i++){
        if(nums[i]>=target){
            return i;
        }
    }
    
};

複製程式碼


相關文章