4-29,5道简单JS笔试算法题

155 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路

1.for循环数组去重

var removeDuplicates = function(nums) {
    if(!nums.length) return 0;
    let i = 0;
    nums.forEach(e=>{
        if(e !== nums[i]){
            i++;
            nums[i] = e;
        }        
    })
    return i + 1;  
}

2.数组拼接求和翻转拆分

image.png

代码

    let addTwoNumbers = function(l1, l2) {
         l1=l1.reverse().join('')
         l2=l2.reverse().join('')
      console.log(l1,l2,1)
        l1 = Number(l1)+Number(l2)
        l1=String(l1).split('').reverse()
      console.log(l1,2);
}
addTwoNumbers([0],[0])

3.检查整数及其两倍数是否存在

image.png

代码

    let addTwoNumbers = function(l1) {
      let flag=false
      l1.forEach(item=>{
        l1.forEach(e => {
         if( item!==e&&(item*2===e||e*2==item)){
             return flag=true
         }
       })
     })
     console.log(flag);
}
addTwoNumbers([3,1,7,11])//[3,1,7,11]  [10,2,5,3]  [7,1,14,11]

4.最高频率的IP

image.png

代码

  highestFrequency(ipLines) {
           let h={};
           let maxNum=0
           let maxStr=''
           ipLines.forEach(i=>{
               let a= i
               h[a]===undefined?h[a]=1:h[a]++
               if(h[a]>maxNum){
                   maxStr=a
                   maxNum=h[a]
               }
           })
           return maxStr
  }
  highestFrequency(["192.168.1.1","192.118.2.1","192.168.1.1"])//192.168.1.1
  highestFrequency(["211.253.56.94","137.146.172.106","211.205.113.199","227.242.103.82","137.146.172.106","30.147.114.139","170.34.209.231","145.174.193.236","133.55.158.175","95.155.235.70","92.44.234.28","180.67.197.242","137.146.172.106","27.67.218.217","237.181.177.254","25.51.213.45","105.145.158.172","80.105.131.156","184.12.220.191","137.146.172.106","152.107.96.18","105.75.61.254","183.211.147.225"])
  //137.146.172.106

5.最小子数组求和

image.png

代码

 export class Solution {
 minSubArray(nums) {
if (nums.length === 1) {
            return nums[0]
          }
          if (nums.length === 2) {
            if (nums[0] < nums[1]) {
              return nums[0]
            } else {
              return nums[1]
            }
          }

         let  min = Math.min(...nums)
         for(let i = 0;i<nums.length;i++) {
           let sum = nums[i]
           for(let j=i+1;j<nums.length;j++) {
            sum+=nums[j]
            if(sum<min) {
              min = sum
            }
           }
         }
        return min
  }
}
minSubArray[0]//0
minSubArray[1,1]//1
minSubArray[1,-1,-2,1,-4]//-6

如果有第五题各种情况均考虑到的代码请在评论区分享,感谢