leetcode
狗斯特里
这个作者很懒,什么都没留下…
展开
-
LeetCode 840. 矩阵中的幻方(Javascript)
题目3 x 3 的幻方是一个填充有从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。给定一个由整数组成的 grid,其中有多少个 3 × 3 的 “幻方” 子矩阵?(每个子矩阵都是连续的)。示例:输入: [[4,3,8,4],[9,5,1,9],[2,7,6,2]]输出: 1解释:下面的子矩阵是一个 3 x 3 的幻方:438951276而这一个不是:384519762总的来说,在本示例所给定的矩阵中只有一个 3 x 3原创 2020-07-02 20:27:31 · 218 阅读 · 0 评论 -
LeetCode 532. 数组中的K-diff数对(Javascript)
题目给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对。这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字,且两数之差的绝对值是 k.示例 1:输入: [3, 1, 4, 1, 5], k = 2输出: 2解释: 数组中有两个 2-diff 数对, (1, 3) 和 (3, 5)。尽管数组中有两个1,但我们只应返回不同的数对的数量。示例 2:输入:[1, 2, 3, 4, 5], k = 1输出: 4解释:原创 2020-07-01 21:03:04 · 142 阅读 · 0 评论 -
LeetCode 605. 种花问题(Javascript)
题目假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出: True示例 2:输入: flowerbed = [1,0,0,0,1], n = 2输出原创 2020-07-01 00:50:33 · 314 阅读 · 0 评论 -
LeetCode 219. 存在重复元素 II(Javascript)
题目给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,2,3], k = 2输出: false思路遍历数组依次取 nums[i],并与其后原创 2020-06-30 22:31:22 · 146 阅读 · 0 评论 -
LeetCode 面试题 16.04. 井字游戏(Javascript)
题目设计一个算法,判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘,由字符" ",“X"和"O"组成,其中字符” "代表一个空位。以下是井字游戏的规则:玩家轮流将字符放入空位(" “)中。第一个玩家总是放字符"O”,且第二个玩家总是放字符"X"。"X"和"O"只允许放置在空位中,不允许对已放有字符的位置进行填充。当有N个相同(且非空)的字符填充任何行、列或对角线时,游戏结束,对应该字符的玩家获胜。当所有位置非空时,也算为游戏结束。如果游戏结束,玩家不允许再放置字符。如原创 2020-06-30 13:21:43 · 583 阅读 · 0 评论 -
LeetCode 119. 杨辉三角 II(动态规划)(Javascript)
题目给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?思路用动态规划的思路对比新的一行的数据与上一行新增末尾一项值为 1j 指向当前行的第几项,除了第一项与最后一项外,第 rows[j] 项的值等于 rows[j] + rows[j - 1]代码/*** @param {number} rowInd原创 2020-06-29 23:11:45 · 108 阅读 · 0 评论 -
LeetCode 914. 卡牌分组(Javascript)
题目给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:[1,1,1,2,2,2,3,3]输出:false解释:没有满足要求的分组。示例 3:输入:[1]原创 2020-06-29 17:28:11 · 151 阅读 · 0 评论 -
Leetcode 118. 杨辉三角(Javascript)
题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]思路除了第一行外,所有行的第一列与最后一列的值都为 1第 i 行第 j 列的值等于第 i - 1 行里面 j 与 j + 1 所在列的值之和代码/*** @param {number} numRows* @return {numbe原创 2020-06-28 21:12:03 · 143 阅读 · 0 评论 -
LeetCode 665. 非递减数列(Javascript)
题目给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。示例 1:输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2:输入: nums = [4,2,1]输出: false解释: 你不能在只改变一个元素的情原创 2020-06-27 15:26:18 · 139 阅读 · 0 评论 -
LeetCode 88. 合并两个有序数组(Javascript)
题目给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出: [1,2,2,3,5,6]思路(双指针原创 2020-06-25 21:49:29 · 746 阅读 · 0 评论 -
LeetCode 66. 加一(Javascript)
题目给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路末尾数字加 1 ,接着从末尾开始向前判断如果数字等于 10 的话,那么当前数字变为 0 ,并且原创 2020-06-24 20:04:14 · 169 阅读 · 0 评论 -
LeetCode 53. 最大子序和(Javascript)
题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路代码复杂度分析...原创 2020-06-23 21:23:02 · 138 阅读 · 0 评论 -
LeetCode 121. 买卖股票的最佳时机(Javascript)
题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。原创 2020-06-21 20:39:32 · 264 阅读 · 0 评论 -
LeetCode 35. 搜索插入位置(Javascript)
题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0思路一(用 Javscript 方法实现)首先用 indexOf 获取 target 在数组中原创 2020-06-20 10:54:04 · 193 阅读 · 0 评论 -
LeetCode 27. 移除元素(Javascript)
题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,原创 2020-06-19 22:15:22 · 194 阅读 · 0 评论 -
LeetCode 26. 删除排序数组中重复项(Javascript)
题目给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并原创 2020-06-19 20:28:05 · 229 阅读 · 0 评论 -
LeetCode 1. 两数之和(Javascript)
题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]代码/** * @param {number[]} nums * @param {number} target * @re原创 2020-06-18 20:24:10 · 140 阅读 · 0 评论