03 2021 档案

摘要:使用递归的方式解决,先新建一个数组用于存放数据,树的每一层都是一个第二维的数组,然后再将数组扁平化 var levelOrder = function(root) { let levelArr = []; build(root,0); function build(node,level) { if( 阅读全文
posted @ 2021-03-29 10:31 JMH0113 阅读(28) 评论(0) 推荐(0)
摘要:树的问题主要通过递归解决,确认每个节点需要做的事情 1.先在数组中找到最大值作为根节点 2.最大值左边作为root.left,右边作为root.right 3.递归调用左右数组构造二叉树 var constructMaximumBinaryTree = function(nums) { return 阅读全文
posted @ 2021-03-27 14:21 JMH0113 阅读(36) 评论(0) 推荐(0)
摘要:var connect = function(root) { if(root == null) return null; var connectTwo = function(node1,node2) { if(!node1 || !node2) return ; node1.next = node2 阅读全文
posted @ 2021-03-26 18:42 JMH0113 阅读(32) 评论(0) 推荐(0)
摘要:时间O(n)空间O(1)的方法 var isPalindrome = function(head) { let left = head; let right; let slow=head ;let fast = head; while(fast !==null && fast.next !== nu 阅读全文
posted @ 2021-03-25 10:25 JMH0113 阅读(38) 评论(0) 推荐(0)
摘要:输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295 输出:2 -> 1 -> 9,即912我用的方法是先求两个链表相加的和,然后再把这个和以链表的形式输出,但是这种方式没有考虑到链表的长度,不能通过所有示例... var addTwoNumbers = funct 阅读全文
posted @ 2021-03-21 16:15 JMH0113 阅读(107) 评论(0) 推荐(0)
摘要:输入:head = [1,2,3,4] 输出:[2,1,4,3]遍历思路:先定义一个节点0,让0->head,让1指向next的next,也就是3,因为目的是给1和2做交换,让0指向2,2指向1,这样就完成1和2的交换了,然后让temp跳过2指向1,继续迭代,最后返回0的next // 遍历方式 v 阅读全文
posted @ 2021-03-21 10:33 JMH0113 阅读(42) 评论(0) 推荐(0)
摘要:给你链表的头节点 head 和一个整数 k 。 交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。 定义两个指针fast和slow,fast先往前走k个节点,记录下这个即将被交换的节点,然后slow开始走,当fast走到末尾的时候,slow正好走到倒 阅读全文
posted @ 2021-03-20 17:04 JMH0113 阅读(49) 评论(0) 推荐(0)
摘要:首先定义两个指针fast和slow都指向头节点,让fast指针先走,走过k个节点后再让slow走,当fast指针走到末尾的时候slow指针正好走到倒数第k个节点 var getKthFromEnd = function(head, k) { let fast = slow = head; while 阅读全文
posted @ 2021-03-20 13:20 JMH0113 阅读(27) 评论(0) 推荐(0)
摘要:运用sort方法和取随机数可以实现 let arr = [1,2,3,4,5,6,7,8]; arr.sort(function(a,b){ let ran=Math.random(); if(ran>0.5) { return a-b; }else{ return b-a; } }) consol 阅读全文
posted @ 2021-03-17 10:30 JMH0113 阅读(131) 评论(0) 推荐(0)
摘要:先找到股票最低价的一天,然后思考哪天卖出能使收益最大化,一次遍历解决 var maxProfit = function(prices) { let a = prices[0]; // 找到最低价的一天 let max = 0; for(let i=1;i<=prices.length;i++) { 阅读全文
posted @ 2021-03-16 09:47 JMH0113 阅读(37) 评论(0) 推荐(0)
摘要:动态规划问题,努力学习中..可以利用一个数组存储计算过的值,避免重复计算 var massage = function(nums) { if(nums.length 0) return 0; if (nums.length == 1) return nums[0]; let dp = []; dp[ 阅读全文
posted @ 2021-03-15 21:45 JMH0113 阅读(49) 评论(0) 推荐(0)
摘要:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 修改原数组解法,如果当前值加上一个值大于当前的值 阅读全文
posted @ 2021-03-14 10:52 JMH0113 阅读(38) 评论(0) 推荐(0)
摘要:因为JavaScript是静态作用域,作用域在对象创建的时候就已经确定了,但JavaScript又是一门面向对象语言,面向对象的基本特点封装继承多态,为了满足这种面向对象的特点所以引入了this,this的指向是动态的,不在函数对象定义时绑定,this指向当前调用他的对象。 阅读全文
posted @ 2021-03-13 18:41 JMH0113 阅读(67) 评论(0) 推荐(0)
摘要:明天有网易的笔试,去牛客看了下网易的笔试真题,第一道就是这个题,做了一下 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 阅读全文
posted @ 2021-03-12 14:36 JMH0113 阅读(71) 评论(0) 推荐(0)
摘要:应届的我再一次面试受到打击,可能是非科班的我计算机基础不好导致的面试失败,我决定努力学习计算机基础知识,希望通过博客记录积累一下。 阅读全文
posted @ 2021-03-11 13:18 JMH0113 阅读(25) 评论(0) 推荐(0)