Java教程

面试算法题

本文主要是介绍面试算法题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

数组扁平去重算法

本篇从复杂到简易依次展现,是最为全面的习题整理。

1. 不利用任何函数的方法

let a = [1,2,3,4,5,[1,2,3]];
        let b = [];
        let c = [];
        for(let i=0; i<a.length; i++){
            //查找到二维数组 construct 不能正确显示
            if(a[i] instanceof Array){
                console.log("成功找到")
                 b = b.concat(a[i]);
                 break;
                }
                b[i] = a[i];//必须要放在判断是否是数组的下面
        }
        //数组去重
        for(let i=0; i<b.length; i++){
            //设置一个新的数组
            for(let j=0; j<=c.length; j++){
                if(b[i]==c[j]){
                   break;
                } 
            };
            //如果没有找到相同的则将赋值给c
            if(c.length == j){
                  c[c.length]==b[i]
                }
        }
        for(val in c)
        {
            console.log(val);
        }

2.利用数组函数的方法

 let a = [1,2,3,4,5,[1,2,3]];
        let b = [];
        for(let i=0; i<a.length; i++){
            //查找到二维数组 construct 不能正确显示
            if(a[i] instanceof Array){
                console.log("成功找到")
                 b = b.concat(a[i]);
                 break;
                }
                b[i] = a[i];//必须要放在判断是否是数组的下面
        }
        for(let i=0; i<b.length; i++){
            for(let j=i+1; j<=b.length; j++){
                if(b[i]==b[j]){
                   b.splice(j,1);
                } 
            };
        }

        for(val of b){
            console.log(val);
        }

3.利用一些数据结构的唯一性

 //方法1 对象属性具有唯一性不能有两个键值不同值
        let obj = {};
        for(let i=0; i<arr.length; i++){
            //obj[arr[i]] = 0;
            //判断一下重复了几次 
            //没有赋值的时候键值的值默认为0
            if(obj[arr[i]]){
                obj[arr[i]]++;//当键是变量的时候一定要加[]
            }
            else{
                obj[arr[i]] = 1;
            }
            //如果没有的话就给它赋值为1 有的话就加加
        }
        console.log(obj);
  //方法2伪数组中不允许出现重复的值
        let a = [1,2,3,4,5,[1,2,3]];
        let b = [];
        let c=[]
        for(let i=0; i<a.length; i++){
            //查找到二维数组 construct 不能正确显示
            if(a[i] instanceof Array){
                console.log("成功找到")
                 b = b.concat(a[i]);
                 break;
                }
                b[i] = a[i];//必须要放在判断是否是数组的下面
        }
        c =Array.from(new Set(b))
        for(val of c){
            console.log(val);
        }

希望能带给你帮助加油冲刺呀!

这篇关于面试算法题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!