每天一道算法题
_Phoebe__
努力学习的大二计算机系小萌新️
落子无悔,抉择本身就是向前。
展开
-
【leetcode】754.到达终点的数字
由于对称性,每次可以选择向左或向右移动,因此,我们可以将 target统一取绝对值。我们将 s一直循环累加,直到满足 s≥target 并且 (s−target)mod2=0,此时的移动次数 k就是答案,直接返回。因为如s≥target 且 (s−target)mod2=0,我们只需要把前面 (s−target)/2这个正整数变为负数,就能使得 s与 target相等。第 i 次移动(从 i == 1 开始,到 i == numMoves ),在选择的方向上走 i 步。第二次移动,从 1 到 -1。原创 2022-11-04 14:48:57 · 1064 阅读 · 1 评论 -
【leetcode】921.使括号有效的最少添加
例如,如果 s = "()))" ,你可以插入一个开始括号为 "(()))" 或结束括号为 "())))"。若 c为右括号,此时如果栈不为空,且栈顶元素为左括号,则将栈顶元素出栈,表示匹配成功;时间复杂度为 O(n),空间复杂度 O(n)。给定一个括号字符串 s ,移动N次,你就可以在字符串的任何位置插入一个括号。遍历结束后,栈中剩余的元素个数即为需要添加的括号数。它可以被写作 (A),其中 A 是有效字符串。若 c 为左括号,直接将 c入栈;输入:s = "())"输入:s = "((("原创 2022-10-04 09:51:54 · 748 阅读 · 0 评论 -
盛水最多的容器(双指针) leetcode
假设状态 S(i, j)下 h[i] < h[j],在向内移动短板至 S(i + 1, j),则相当于消去了 S(i,j−1),S(i,j−2),...,S(i,i+1) 状态集合。设两指针 i, j,指向的水槽板高度分别为 h[i], h[j] ,此状态下水槽面积为 S(i, j)。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。若向内 移动短板 ,水槽的短板 min(h[i], h[j])可能变大,因此下个水槽的面积可能增大。输入:[1,8,6,2,5,4,8,3,7]原创 2022-09-19 12:20:05 · 187 阅读 · 0 评论 -
特征数组的特征值 leetcode
如果存在一个数 x ,使得 nums 中恰好有 x 个元素 大于或者等于 x ,那么就称 nums 是一个 特殊数组 ,而 x 是该数组的 特征值。根据特征值 x 的定义,xx一定是在 [1, n]范围内的一个整数,其中 nn 是数组 nums 的长度。如果 x = 0,应该有 0 个元素 >= x,但实际有 2 个。如果 x = 1,应该有 1 个元素 >= x,但实际有 0 个。如果 x = 2,应该有 2 个元素 >= x,但实际有 0 个。输入:nums = [0,4,3,0,4]原创 2022-09-12 00:34:25 · 504 阅读 · 0 评论 -
leetcode两数之和 c++
当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。原创 2022-09-12 00:05:28 · 130 阅读 · 0 评论