最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 前端剑指offer算法题整理

    正文概述 掘金(咸鱼翻身翻两次)   2020-11-25   648

    1、在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    输入

    7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
    

    返回值

    true
    

    while(line=readline()){
        var index=line.indexOf(",");
        var left=parseInt(line.substring(0,index));
        var right=JSON.parse(line.substring(index+1));
        print(Find(left,right));
    }
    
    function Find(target, array)
    {
        // write code here
        var arr = array;
        for(var i=0;i<arr.length;i++){
            for(var j=0;j<arr[i].length;j++){
                if(arr[i][j] == target){
                    return true;
                }
            }
        }
        return false;
    }    
    
    

    2、请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

    //第一种
    function replaceSpace(str) {
      let temp = []
      for (let i = 0; i<str.length; i++) {
        if (str[i] === ' ') {
            temp.push('%20')
        } else {
            temp.push(str[i])
        }
      }
      return temp.join('')
    }
    // 第二种
    function replaceSpace(str){
        // write code here
         return str.replace(/ /g, "%20");
    }
    
    

    3、输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

    输入

    {67,0,24,58}
    

    返回值

    [58,24,0,67]
    

    
    function printListFromTailToHead(head)
    {
        var arrayList = [];
        var node = head;
        while(node){
            arrayList.unshift(node.val);
            node = node.next;
        }
        return arrayList;
    
    }
    
    

    4、输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

    输入

    [1,2,3,4,5,6,7],[3,2,4,1,6,5,7]
    

    返回值

    {1,2,5,3,4,6,7}
    

    
     function TreeNode(x) {
        this.val = x;
        this.left = null;
        this.right = null;
    }
    function reConstructBinaryTree(pre, vin)
    {
        // write code here
        //利用递归实现 其中preStart代表的是先序遍历的第一个节点的下标位置 后边的依次类推
        function rebuild(preStart, preEnd, vinStart, vinEnd) {
            let node = new TreeNode(pre[preStart])
            //判断是否只有一个节点 如果只有一个节点 则返回节点本身
            if ((preStart == preEnd) && (vinStart == vinEnd)) {
                return node
            }
            let index = vin.indexOf(pre[preStart]) //查找树的根节点
            let leftLen = index - vinStart //左子树的长度
            let leftPrend = preStart + leftLen //先选出先序遍历的左子树的所有节点
            if (leftLen > 0) {
                //此时相当于遍历左子树的左子树  因此先序遍历开始的节点需加一 中序遍历结束的节点需减一
                node.left = rebuild(preStart + 1, leftPrend, vinStart, index - 1)
            }
            if (leftLen < preEnd - preStart) {
                node.right = rebuild(leftPrend + 1, preEnd, index + 1, vinEnd)
            }
            return node
        }
        let head = rebuild(0, pre.length - 1, 0, vin.length - 1)
        return head
    }
    
    

    5、用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

    
    let inStack = []
    let outStack = []
    
    function push(node)
    {
        inStack.push(node)
    }
    function pop()
    {
        // write code here
        if(!outStack.length){
            while(inStack.length){
                outStack.push(inStack.pop())
            }
        }
        
        return outStack.pop()
    }
    
    

    起源地下载网 » 前端剑指offer算法题整理

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元