一、力扣978978. 最长湍流子数组 - 力扣(LeetCode) (一)题目详情 给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。 max = Math.max(Math.max(max,f[i]),g[i]); } return max; } } 运行截图: 二、力扣 单词拆分 - 力扣(LeetCode) (一)题目详情 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 return dp[n]; } } 运行截图: 三、力扣467467. 环绕字符串中唯一的子字符串 - 力扣(LeetCode) (一)题目详情 定义字符串 base 为一个 "abcdefghijklmnopqrstuvwxyz" 无限环绕的字符串,所以 base 看起来是这样的
例如nums=[3,1,2,3,3,3,3],target=2,首次二分时无法判断区间 [0,3]和区间 [4,6]哪个是有序的。 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。 返回链表 4->5.
目录 第1题:只出现一次的数字 第2题:两数之和 第3题:Excel表列名称 第4题:数组中重复的数字 第5题:二维数组中的查找 第6题:替换空格 第7题:从头到尾打印链表 第8题:斐波拉契数列 第9题 :青蛙跳台阶问题 第10题:旋转数组的最小数 ---- 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。 res[len] = (tmp - 1) % 26 + 'A'; tmp = (tmp - 1) / 26; } return res; } ---- 第4题
他 每天 都往力扣银行里存钱。 最开始,他在周一的时候存入 1 块钱。从周二到周日,他每天都比前一天多存入 1 块钱。在接下来每一个周一,他都会比 前一个周一 多存入 1 块钱。 给你 n ,请你返回在第 n 天结束的时候他在力扣银行总共存了多少块钱。
示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 原题url:https://leetcode-cn.com 比如:从 7 个数中取 4 个数,开始的时候遍历到 4 就足够了,因为从 5 开始凑不齐 4 个数,之后的遍历也是同样如此。
示例 : 输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。 比如: 小偷到了第3家,他有两个选择:不偷第3家之后去第4家、偷完第3家之后去第5家。 这时他需要比较的是: 从第4家开始能偷到的最多金钱 第3家的金钱加上从第5家开始能偷到的最多金钱 上面两者谁更多,就选择怎么做。
✨ 前言 本文用于记录力扣有关链表的oj题,环形链表l和环形链表II. 主要采用快慢指针的方法. 一、环形链表 声明:题目来源于 力扣 题目链接:传送门 题目介绍: 给你一个链表的头节点 head ,判断链表中是否有环。 示例1: 示例1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 slow) { return true; } } return false; } 提交结果: 二、环形链表 声明:题目来源于 力扣 示例1: 输入:head = [3,2,0,-4], pos = 1 输出:返回索引为 1 的链表节点 解释:链表中有一个环,其尾部连接到第二个节点。
1、两数之和 解题方法:①两层遍历求解 ②使用hashMap存储对应的数值和下标
示例 1: 输入:x = 123 输出:321 示例 2: 输入:x = -123 输出:-321 示例 3: 输入:x = 120 输出:21 示例 4: 输入:x = 0 输出 存在整数 x 使得 n == 3x 示例 1: 输入:n = 27 输出:true 示例 2: 输入:n = 0 输出:false 示例 3: 输入:n = 9 输出:true 示例 4: * 2).reduce((a, b) => a + b); } let isHappy = n => { let slow = n; // 2 let fast = getNext(n); // 4 == slow){ slow = getNext(slow); // 4 16 37 58 89 145 42 20 4 fast = getNext(getNext(fast)) // 37 89 42 4 37 89 42 4 37 } return fast === 1; } console.log(isHappy(7)); 5 二叉树的中序遍历 关于二叉树的遍历,主要有三种
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 有三种方案: 使用栈解决 双链表解决 递归解决 使用栈解决
请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表(从小到大排序)。
力扣78. 子集 题目描述: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 , i+1); // 撤销选择 track.pop_back(); } } }; 完整的测试示例C++代码如下: /* 力扣
示例 4: 输入:"/a/./b/../../c/" 输出:"/c" 示例 5: 输入:"/a/../../b/..
个人,给定一个 res 数组,每个元素含有两个元素,表示这两个人不能结为朋友,再给定一个 req 数组,每个元素也含有两个元素,表示这两个人想要结成朋友
给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。
其实你可以简单理解为: 当我们知道了: a / b = 3 b / d = 2 c / d = 4 我们可以将 d 看成是根节点,它有子节点 b、c,b有子节点 a 这样是不是好理解多了。
代码 var fourSum = function (nums, target) { if (nums.length < 4) return [] let n1, n2, n3, n4 nums.sort((a, b) => (a - b)) let arr = [] for (let nums.length - 1 while (left < right) { n3 = nums[left], n4 = nums[right] let sum = n1 + n2 + n3 + n4 if (sum < target continue } arr.push([n1, n2, n3, n4]
示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 原题url:https://leetcode-cn.com } else { result.next = second; } return head.next; } } 执行用时,有的时候是4
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
package Leetcode真题分门别类.链表; /** * @Author bennyrhys * @Date 2020-05-29 11:42 * * 思路: * 链表翻转,直接改变指针指向 * 保存状态需要创建三个指针(pre前 cur当前 next下一个) * * 复杂度: * 时间O(N) * 空间O(1) * * 注意while处正好判断cur是否为空的情况,返回头节点为末尾null的前一个节点cur * */ import 玩转数据结构.链表看递归.移除链