
算法刷题
学习
胖丁微笑
这个作者很懒,什么都没留下…
展开
-
Leetcode782 变为棋盘
首先要考虑到棋盘的合法性,如果第一行为10101,那么第二行就为01010,第三行就和第一行相同。所以要么和第一行相同,要么和第一行完全相反。然后从整体看,分为偶数和奇数类型,我们可以看到四个角要么是0101,要么是全为1或全为0.那么如果不符合这个,棋盘业不合法。链接:https://leetcode.cn/problems/transform-to-chessboard。如果不存在可行的变换,输出 -1。“棋盘” 是指任意一格的上下左右四个方向的值均与本身不同的矩阵。来源:力扣(LeetCode)原创 2022-08-23 20:23:15 · 248 阅读 · 0 评论 -
Leetcode655 输出二叉树
对于放置在矩阵中的每个节点,设对应位置为 res[r][c] ,将其左子节点放置在 res[r+1][c-2height-r-1] ,右子节点放置在 res[r+1][c+2height-r-1]。给你一棵二叉树的根节点 root ,请你构造一个下标从 0 开始、大小为 m x n 的字符串矩阵 res ,用以表示树的 格式化布局。根节点 需要放置在 顶行 的 正中间 ,对应位置为 res[0][(n-1)/2]。树的 高度 为 height ,矩阵的行数 m 应该等于 height + 1。原创 2022-08-22 21:09:46 · 260 阅读 · 0 评论 -
Leetcode1455 检查单词是否为句中其他单词的前缀
如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。如果 searchWord 不是任何单词的前缀,则返回 -1。链接:https://leetcode.cn/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence。商业转载请联系官方授权,非商业转载请注明出处。原创 2022-08-21 20:57:04 · 226 阅读 · 0 评论 -
Leetcode654 最大二叉树
链接:https://leetcode.cn/problems/maximum-binary-tree。给定一个不重复的整数数组 nums。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。分析:首先看到题呢,想到的就是用递归的方法解决问题。创建一个根节点,其值为 nums 中的最大值。返回 nums 构建的 最大二叉树。来源:力扣(LeetCode)原创 2022-08-20 22:05:41 · 146 阅读 · 0 评论 -
Leetcode1450 在规定时间内完成作业的学生人数
请返回在查询时间 queryTime 时正在做作业的学生人数。形式上,返回能够使 queryTime 处于区间 [startTime[i], endTime[i]](含)的学生人数。链接:https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time。已知,第 i 名学生在 startTime[i] 时开始写作业并于 endTime[i] 时完成作业。商业转载请联系官方授权,非商业转载请注明出处。原创 2022-08-19 21:49:43 · 83 阅读 · 0 评论 -
Leetcode1224 最大相等频率
链接:https://leetcode.cn/problems/maximum-equal-frequency。看到此题,首先想到的就是创建两个哈希表,一个用来存储数字出现的次数,一个用来存储频率相关的次数。如果删除这个元素后没有剩余元素存在,仍可认为每个数字都具有相同的出现次数(也就是 0 次)。商业转载请联系官方授权,非商业转载请注明出处。从前缀中 恰好删除一个 元素后,剩下每个数字的出现次数都相同。解法二,由于数据范围较小,可以用数组作为简易哈希表。来源:力扣(LeetCode)...原创 2022-08-18 22:10:14 · 137 阅读 · 0 评论 -
Leetcode1302 层数最深叶子节点的和
给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和。原创 2022-08-17 18:50:35 · 88 阅读 · 0 评论 -
Leetcode641 实现双端队列
boolean insertFront():将一个元素添加到双端队列头部。boolean deleteFront() :从双端队列头部删除一个元素。boolean deleteLast() :从双端队列尾部删除一个元素。boolean isEmpty() :若双端队列为空,则返回 true ,否则返回 false。int getFront() ):从双端队列头部获得一个元素。如果双端队列为空,返回 -1。boolean isFull() :若双端队列满了,则返回 true ,否则返回 false。...原创 2022-08-15 17:41:11 · 167 阅读 · 0 评论 -
leetcode118 杨辉三角
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> ret = new ArrayList<List<Integer>>(); //创建一个链表原创 2022-04-20 20:38:37 · 100 阅读 · 0 评论 -
leetcode566 重塑数组
在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。考察:数组,矩阵class Solution { pub原创 2022-04-20 20:19:34 · 92 阅读 · 0 评论 -
leetcode121 买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0考察:数组,动态规划//方法一,暴力破解,但是超时class Solution { public int maxProfit(int[] prices) { int sum = 0;原创 2022-04-19 22:29:01 · 78 阅读 · 0 评论 -
leetcode305 两个数组的交集Ⅱ
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。class Solution { public int[] intersect(int[] nums1, int[] nums2) { //如果nums1元素个数大于nums2元素个数,交换数组位置 if (nums1.length > nums2.原创 2022-04-19 21:43:01 · 123 阅读 · 0 评论 -
leetcode88 合并两个有序数组
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。//直接合并后用arrays的sort方法排序class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { for (int i = 0; i != n;原创 2022-04-18 22:21:25 · 104 阅读 · 0 评论 -
leetcode01两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。//暴力破解,双重循环找到符合目标target的值,然后返回class Solution { public int[] twoSum(int[] nums, int target) { int len = nums.length; fo原创 2022-04-18 22:15:15 · 77 阅读 · 0 评论 -
leetcode53 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。//暴力破解,寻找所有可能的子序列和,然后找到最大值class Solution { public int maxSubArray(int[] nums) { int res = nums[0]; int sum = 0; for(int num : nums) { if(sum &g原创 2022-04-18 00:13:30 · 188 阅读 · 0 评论 -
leetcode 217存在重复元素
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。方法一//java Set自带去重,如果去重后的长度小于原长度,则返回trueclass Solution { public boolean containsDuplicate(int[] nums) { Set<Integer> res = new HashSet<Integer>(); //创建一个新的set集合原创 2022-04-18 00:05:49 · 87 阅读 · 0 评论