JavaScript一天一个算法题~持续更新中。。。。。
1,数组去重
i.暴力去重
思路:建一个空数组,通过判断原数组的元素是否在空数组内,如果在,不放入,不在,放入空数组。
function clearCommnetArray(array){
    let arra=[]
    array.forEach(item=>{
        if(!arra.includes(item)){
            arra.push(item)
        } 
    })
    return arra
}ii.Set容器去重法
Set容器内不允许元素重复,我们就利用这点实现元素去重。
function clearCommnetArray(array){
    let set=new Set(array)
    let arra=[]
    for(let item of set){
        arra.push(item)
    }
    return arra
}2,两数之和

i.暴力解法
就是一个一个拿出来比较。先拿出第一个值和后面的值一个个相加,所以第一层循环需要循环
array.length-1次。
从第二个值开始取值,则第二次初始值是i+1,能循环到最后一个值,循环次数也是array.length-1次。只要符合条件就无需再次进行了。
function sum(nums,target){ for(let i=0,len=nums.length-1;i<len;i++){ for(let j=i+1;j<=nums.length-1;j++){ console.log("ha",nums[i],nums[j]); console.log(i,j); if(nums[i]+nums[j]==target){ return [i,j] } } } }
ii.map映射法
map存放之前的元素和下标,如果这一次的差值在map中的key(匹配到值得元素,说明这个的元素和之前某一个元素之和等于target)
function sum(nums,target){
    let map=new Map()
    for(let i=0,len=nums.length;i<len;i++){
        let a= target-nums[i]
        if(map.has(a)){
            return [map.get(a),i]
        }
        map.set(nums[i],i)
    }
} 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号