随笔分类 -  LeetCode

上一页 1 ··· 8 9 10 11 12 13 下一页
摘要:给定一个m x n二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用 ###1 阅读全文
posted @ 2022-05-25 00:27 失控D大白兔
摘要:给你一个无重复元素的整数数组candidates和一个目标整数target,找出 candidates中可以使数字和为目标数 target的所有不同组合,并以列表形式返回,你可以按任意顺序 返回这些组合 candidates中的同一个数字可以无限制重复被选取,如果至少一个数字的被选数量不同则两种组合 阅读全文
posted @ 2022-05-22 20:20 失控D大白兔
摘要:给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个表达式 返回可以通过上述方法构造的、运算结果等于target的不同表达式的数目 ###1. 回溯法(全遍历) public: int res = 0; int f 阅读全文
posted @ 2022-05-22 17:30 失控D大白兔
摘要:实现 pow(x,n) ,即计算 x 的 n 次幂函数 ###1. 递归分治 先考虑指数正数的情况 求x的n次幂函数可以转换成求两个⌊n/2⌋的幂函数之积,由于两个是相同的,运算时间直接减少一半 通过递归使得求解时间成为对数级,需要注意的是分别讨论n的奇偶性 由于使用递归具有一定空间复杂度 clas 阅读全文
posted @ 2022-05-20 17:46 失控D大白兔
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树 平衡二叉树满足子树都为平衡二叉树且左右子树高度差的绝对值小于1 ###1. 平衡性和高度判断分离 从上往下对每一个节点判断其左右子树的高度是否满足要求 以及其左右子树是否是平衡二叉树 时间复杂度为O(n2) 可以发现对每个节点进行最大高度计算时,其实跟其 阅读全文
posted @ 2022-05-20 00:14 失控D大白兔
摘要:###1. 最少的硬币个数 给你一个整数数组 coins,表示不同面额的硬币;以及一个整数amount,表示总金额。 计算并返回可以凑成总金额所需的**最少的硬币个数** 。如果没有任何一种硬币组合能组成总金额,返回-1 。 你可以认为每种硬币的数量是无限的。 跟完全平方数解法完全一致,不过完全平方 阅读全文
posted @ 2022-05-19 14:54 失控D大白兔
摘要:###动态规划 给你一个整数n,返回和为n的完全平方数的最少数量 。 完全平方数是一个整数,其值等于另一个整数的平方,换句话说,其值等于一个整数自乘的积。 例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 思路: 回溯法常用来遍历输出全部路径,以及解决可达性问题 对于这种最优问题 阅读全文
posted @ 2022-05-19 14:43 失控D大白兔
摘要:给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 ###1. 暴力法(超时) 三重循环(列所有数组) class Solution { public: int maxSubArray(vector<int>& nu 阅读全文
posted @ 2022-05-18 21:07 失控D大白兔
摘要:一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列表stones(用单元格序号升序表示,请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时,青蛙默认已站在第一块石子上 阅读全文
posted @ 2022-05-18 17:17 失控D大白兔
摘要:你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合,你作为先手 。 每一回合,轮到的人拿掉 1-3块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 tru 阅读全文
posted @ 2022-05-17 00:51 失控D大白兔
摘要:###1. 两两比较 把当前最长公共前缀与每一个字符串比较,并进行更新减小 class Solution { public: string longestCommonPrefix(vector<string>& strs) { if (!strs.size()) { return ""; } str 阅读全文
posted @ 2022-05-16 16:52 失控D大白兔
摘要:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。 ###1. 暴力双循环 双指针动态维持更新一个无重复子串,每移动一次右指针,判断新加入字符是否在子串中存在 若存在,则找出其在子串中位置,并更新左指针位置,时间复杂度O(n2) class Solution { public: int 阅读全文
posted @ 2022-05-16 09:46 失控D大白兔
摘要:###一. 串的查找 ####1. [最长回文子串(中心扩散/动态规划)](https://www.cnblogs.com/929code/p/16250463.html) ####2. [最长无重复子串(双指针)](https://www.cnblogs.com/929code/p/1627584 阅读全文
posted @ 2022-05-16 08:27 失控D大白兔
摘要:树一般使用递归方式来拆分成子问题 ####1. 合并二叉树 class Solution { public: TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) { if(!root1&&!root2) return nullptr; if( 阅读全文
posted @ 2022-05-16 08:15 失控D大白兔
摘要:给定一个 n × n 的二维矩阵 matrix 表示一个图像,请你将图像顺时针旋转 90 度。 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 ####1. 缩小问题规模 注意到旋转整个图像,可以看做由行到列,由列到行,但由于不能使用辅助数组,翻转行会破 阅读全文
posted @ 2022-05-14 21:53 失控D大白兔
摘要:####1. 两数相加 两数相加(尾插法) class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *head = nullptr, *tail = nullptr; int ca 阅读全文
posted @ 2022-05-14 19:59 失控D大白兔
摘要:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 ###1. 遍历递归 遍历每一个位置,如果存在,则递归其周围区域,并使总区域数加一, 阅读全文
posted @ 2022-05-14 17:25 失控D大白兔
摘要:编写一个高效的算法来搜索 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 阅读全文
posted @ 2022-05-13 18:09 失控D大白兔 阅读(40) 评论(0) 推荐(0)
摘要:给定一个非负整数数组nums,你最初位于数组的第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 ##1. 回溯法 纯粹当做练手,运行不仅超时,还超内存 使用递归的方式,从当前位置做选择,选择为当前位置能跳的距离,然后转换到下一位置,到达目的结束递归 阅读全文
posted @ 2022-05-12 20:00 失控D大白兔

上一页 1 ··· 8 9 10 11 12 13 下一页