一、题目描述 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。 二、示例示例1: 输入:“aabcccccaaa” 输出:“a2b1c5a3” 示例2:输入:“abbccd” 输出:“abbccd” 解释:“abbccd"压缩后为"a1b2c2d1”,比原字符串长度更长。提示:字符串长度在[0,...
法1:回溯 通过之后看了答案,改进了一下 想法:依次在每行放皇后,row(已经到了第row行,此时第0行到row - 1行都放了皇后,即现在已经放了row个皇后)== n,则将此时的board(放皇后的棋盘)放入答案 因为按行依次放皇后,所以不会有多个皇后在同行,只需考虑同列,左上到右下,左下到右上同列:visitedC[]数组标记,其中有n个元素 左上到右下:同一线上元素下标特征:(行下标 - 列下标) 相同。且(行下标 - 列下标)的结果有限...
法1:回溯backtracking 看了答案 想法:输出的各个字符串的长度等于输入的字符串长度 输入的字符串长度相当于搜索树的深度(高度) 当组成的字符串的长度等于输入字符串长度时,就应该将该字符串加入结果集中;然后将最后一个加入的字符¥删去,与和¥同组的字符再衔接组成新的字符串注:¥是一个字符代号;同组指的是在键盘上的同一按钮上 /** * @param {string} digits * @return {string[]} */ var letterCombinations = functi...
题目如图所示: 解题思路: 原地修改数组-----不能创建新数组,放值进入 重新定义数组下标和数值, 1、定义新参数 2、遍历数组,找出 != val的, 3、新参数下标,写入数组, 4、参数自增,返回的参数,即是数组的长度
题目描述36. 有效的数独 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白格用 . 表示。 示例 1: 输入:[ ["5","3",".",".","7",".",".",".","."], ["6",".",".","1","9","5",".",".","."], [".","9...
题目描述66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/plus-one著作权...
题目描述136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1]输出: 1 示例 2: 输入: [4,1,2,1,2]输出: 4 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注...
// easy 1 两数之和 // // 给定一个整数数组 nums?和一个目标值 target,请你在该数组中找出和为目标值的那?两个?整数,并返回他们的数组下标。 // 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 // // 示例: // 给定 nums = [2, 7, 11, 15], target = 9 // 因为 nums[0] + nums[1] = 2 + 7 = 9 // 所以返回 [0, 1]/*** @param {number[]} nums* @param {number} target* @return {number[]} 返...
// medium 31 下一个排列// 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 // // 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 // // 必须原地修改,只允许使用额外常数空间。 // // 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 // 1,2,3 → 1,3,2 // 3,2,1 → 1,2,3 // 1,1,5 → 1,5,1/*** @param {number[]} nums* @return {void} Do not ...
// 771 easy 石头与宝石 // // 给定字符串J?代表石头中宝石的类型,和字符串?S代表你拥有的石头。? // S?中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 // J?中的字母不重复,J?和?S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。 // // 示例 1: // 输入: J = "aA", S = "aAAbbbb" // 输出: 3// 示例 2: // 输入: J = "z", S = "ZZ" // 输出: 0// 注意: // S?和?J?最多...
// 136 easy 只出现一次的数字 // 跟540题一样的解法// // 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 // // 说明: // 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? // // 示例 1: // 输入: [2,2,1] // 输出: 1// 示例?2: // 输入: [4,1,2,1,2] // 输出: 4/*** 解法1:异或* @param {number[]} nums* @return {number}*/ var singleNumber =...
// 205 easy 同构字符串 // 跟290单词规律一模一样 // // // 给定两个字符串?s?和?t,判断它们是否是同构的。 // 如果?s?中的字符可以被替换得到?t?,那么这两个字符串是同构的。 // 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。 // // 示例 1: // 输入: s = "egg", t = "add" // 输出: true// 示例 2: // 输入: s = "foo", t = "bar" // 输出: false// ...
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。 注意,一开始你手头没有任何零钱。 如果你能给每位顾客正确找零,返回 true ,否则返回 false 。> 示例1:示例1: 输入:[5,5,5,10,20] 输出:true 解释: 前 3 位顾客那里,...
leetcode27-移除元素-JavaScript版 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度...
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明:所有数字(包括 target)都是正整数。 解集不能包含重复的组合。示例1: 输入: candidates = [2,3,6,7], target = 7, 所求解集为: [ [7], [2,2,3] ]示例2: 输入: candidates = [2,3,5], target = 8, 所求解集为: [ [2,2,2,2], [2,3,3], [3,5] ]/*** @param {n...