随笔分类 - LeetCode / LeetCode题解
熟悉算法
摘要:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 ####1. 暴力求解 两重循环,时间复杂度O(m*n) class Solution { public: bool searc
阅读全文
posted @ 2022-05-14 14:22
失控D大白兔
摘要:给定一个不含重复数字的数组nums,返回其所有可能的全排列,你可以按任意顺序返回答案 ###1. 不含重复元素排列(回溯法) 每次选一个,转移到下一空间,考虑用回溯思想 遍历选取当前可选数,递归每一位,当最后一位选取结束时记录结果 ``` class Solution { public: vecto
阅读全文
摘要:给定一个非负整数数组nums,你最初位于数组的第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 ##1. 回溯法 纯粹当做练手,运行不仅超时,还超内存 使用递归的方式,从当前位置做选择,选择为当前位置能跳的距离,然后转换到下一位置,到达目的结束递归
阅读全文
posted @ 2022-05-12 20:00
失控D大白兔
摘要:给定一个包含非负整数的m×n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 ###1. 动态规划 将问题转化成子问题的方程(递归重复计算耗时过多,以后不再使用反向递归) 状态转移函数:最小路径长度dp[m][n]=min(dp[m-
阅读全文
posted @ 2022-05-11 23:31
失控D大白兔
摘要:一个机器人位于一个 m x n 网格的左上角 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角 问总共有多少条不同的路径? 思路 1.组合数,总共得移动m+n-2次,其中n-1次为向右,m-1为向下,注意即时运算,别求和防止溢出 点击查看代码 class Solution { publ
阅读全文
posted @ 2022-05-11 09:53
失控D大白兔
摘要:给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 ###一. 接雨水I ####1. 暴力求解 根据每一个柱子左右两端最高的柱子,计算其蓄水量,然后把总的加起来,时间复杂度为O(n2) 暴力双重循环 class Solution { public: int
阅读全文
posted @ 2022-05-10 23:39
失控D大白兔
摘要:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 思路 1.暴力求解 计算任意两端点间的储水量,取最大值,性
阅读全文
posted @ 2022-05-10 21:20
失控D大白兔
摘要:对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。 ####1. 中心扩散 顺序遍历,对每个点进行左右同时扩散,得到其中心点对应的最大回文串和回文串长度(考虑奇偶串要分别用一个中心和两个中心点进行遍历) 时间复杂度为O(n2),空间复杂度为O(
阅读全文
posted @ 2022-05-09 19:05
失控D大白兔
摘要:给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标 思路:求两数和等于目标值,首先考虑二重循环暴力求解,分别将每一个数与所有数进行求和匹配,时间复杂度为O(n2)。进一步可以考虑两求和数一个值大于目标值一半,一个值小于一半
阅读全文
posted @ 2022-05-07 21:50
失控D大白兔

浙公网安备 33010602011771号