franki Blog

make a small progress every day

leetcode 442题

leetcode 442题 数组中重复的数据 给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例1 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] 思路 循环,记录当前num的数字,取反,当这个数继续...

leetcode 22题

leetcode 22题 括号生成 示例1 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例2 输入:n = 1 输出:["()"] 思路 全排列型问题,可以通过回溯法解答 代码 /** * @param {number} n * @return {string[]} */ var gener...

leetcode 13题

leetcode 13题 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如...

leetcode 11题

leetcode 11题 盛最多水的容器 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 示例1 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解...

leetcode 5题

leetcode 5题 最长的回文子串 给你一个字符串 s,找到 s 中最长的回文子串。 示例1 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例2 输入:s = "cbbd" 输出:"bb" 思路 动态规划 代码 /** * @param {string} s * @return {string} */ var lo...

剑指offer-队列最大值

队列最大值 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 示例 输入: ["MaxQueue","push_back","push_back","max_value","pop_front...

剑指offer-翻转单词顺序

和为s的连续正数序列 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串”I am a student. “,则输出”student. a am I”。 示例 输入: "the sky is blue" 输出: "blue is sky the" 思路 方案一: 使用js自带的api 方案二: 递归求解 代码...

剑指offer-和为s的连续正数序列

和为s的连续正数序列 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 输入:target = 9 输出:[[2,3,4],[4,5]] 思路 利用双指针,不断控制指针的移动,来收缩查找的范围,直到找到所有符合要求的结果 代码 /** * @param {n...

剑指offer-和为s的两个数字

和为s的两个数字 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 输入:nums = [2,7,11,15], target = 9 输出:[2,7] 或者 [7,2] 思路 利用双指针,左边的指针从数组头部开始,右边的指针从数组的尾部开始,不断缩小查找范围,找到则输出,没有的话,返回[] 代码...

剑指offer-数组中数字出现的次数 II

数组中数字出现的次数 II 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 示例 输入:nums = [3,4,3,3] 输出:4 思路 利用hash的空间,记录数组中的每一个值出现的次数,接着遍历hash,找到出现一次的数字 代码 var singleNumber = function(nums) { if (n...