leetcode
文章平均质量分 70
wannatolive
车到山前必有路,船到桥头自然直
展开
-
【Leetcode】有关于二分查找的一些题(更新于2021.7.11)
二分查找1.T69 x 的平方根2.T744.寻找比目标字母大的最小字母3.T278 第一个错误的版本4.T540 有序数组中的单一元素5.T33 搜索旋转排序数组6.T81 搜索旋转排序数组 II7.T153 寻找旋转排序数组中的最小值8.T154 寻找旋转排序数组中的最小值 II9. T34 在排序数组中查找元素的第一个和最后一个位置总结参考资料1.T69 x 的平方根题目链接/** * @BelongsProject: study * @BelongsPackage: PACKAGE_NAM原创 2021-04-09 16:25:24 · 207 阅读 · 0 评论 -
【Leetcode】有关于链表的一些题
文章目录1.T160 相交链表2.T206 反转链表3.T21 合并两个有序链表4.T83 删除排序链表中的重复元素5.T19 删除链表的倒数第 N 个结点6.T24 两两交换链表中的节点7.T445 两数相加 II8.T234 回文链表9.T725 分隔链表10.T328 奇偶链表题目来源1.T160 相交链表相交链表/** * @BelongsProject: study * @BelongsPackage: PACKAGE_NAME * @Author: Alone * @Descrip原创 2021-03-24 15:31:58 · 112 阅读 · 0 评论 -
【Leetcode】98.验证二叉搜索树 题解
题目给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。题目链接思路记录一下二叉搜索树的性质。节原创 2020-09-14 08:34:28 · 94 阅读 · 0 评论 -
【Leetcode】53.最大子序和&&152.乘积最大子数组 题解
这两道题有些相似,放在一起更方便以后查阅。53.最大子序和题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。题目链接思路这题可以采用动态规划解决。设dp[i]为[0,i]内连续子数组最大和。对于nums[i]只有两种方式,取或者不取,若取nums[i]放入连续子数组,此时最大和为nums[i]+dp[i原创 2020-09-13 10:06:52 · 110 阅读 · 0 评论 -
【Leetcode】由二叉树遍历序列构造二叉树
前序+中序题目根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7题目链接思路前序遍历是先根节点再左子树再右子树。前序遍历的第一个节点就一定是根节点。中序遍历是先左子树再根节点再右子树。所以可以在中序遍历序列中查找前序遍历的第一个节点,再递归下去。代码class Sol原创 2020-09-12 19:30:31 · 630 阅读 · 0 评论 -
【Leetcode】二叉树的四种遍历方式
二叉树的四种遍历方式前序遍历题目思路迭代代码中序遍历思路迭代代码后序遍历代码层序遍历题目思路代码前序遍历题目给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,2,3]题目链接思路迭代从根节点开始,每次迭代弹出当前栈顶元素,并将其孩子节点压入栈中,先压右孩子再压左孩子。代码package com.alone.test.leetcode;import javax.naming.LinkLoopException;import原创 2020-09-12 14:51:09 · 132 阅读 · 0 评论 -
【Leetcode】剑指offer33.二叉搜索树的后序遍历序列 题解
题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树:5/ \2 6/ \1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true提示:数组长度 <= 1000题目链接思路记录一下二叉搜索树的性质:左子树节点值小于根节点,右子树节点值大于根节点。每次递归找到第一个大于根节原创 2020-09-09 23:18:47 · 125 阅读 · 0 评论 -
【Leetcode】第204场周赛1 2 3题题解
重复至少 K 次且长度为 M 的模式题目给你一个正整数数组 arr,请你找出一个长度为 m 且在数组中至少重复 k 次的模式。模式 是由一个或多个值组成的子数组(连续的子序列),连续 重复多次但 不重叠 。 模式由其长度和重复次数定义。如果数组中存在至少重复 k 次且长度为 m 的模式,则返回 true ,否则返回 false 。示例 1:输入:arr = [1,2,4,4,4,4], m = 1, k = 3输出:true解释:模式 (4) 的长度为 1 ,且连续重复 4 次。注意,模式原创 2020-08-30 12:32:12 · 193 阅读 · 1 评论 -
【Leetcode】31.下一个排列 题解
题目实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1题目链接思路从后向前找到第一个a[i] < a[i + 1]的位置,此时[i + 1, nums.length - 1]为降序排列。再次从后向前查找第一个大原创 2020-08-29 14:22:18 · 91 阅读 · 0 评论 -
【Leetcode】39.组合总和 题解
题目给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates = [2,3,5], target = 8,原创 2020-08-28 10:39:32 · 185 阅读 · 0 评论 -
【Leetcode】17.电话号码的字母组合 题解
题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。思路递归。把问题的范围缩小一点,假设字符串长度为1,结果就直接枚举该字符的组合。若字符串长度为2,结果需要开二重循环,枚举每一种可能。若字符串长度为3,结果就需要开三重循环,依此类推。对原字符串中的每一个数字,操作都是枚举再添加,就可以递归的处理问题。代码class Solution { private ArrayList<String&g原创 2020-08-27 08:16:09 · 169 阅读 · 0 评论 -
【Leetcode】647. 回文子串 题解
题目给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。题目链接思路记录一下从别处看到的做dp题的大致思路:大问题是什么?规模小一点的子问题是什么?二者之间的联系?假设dp[i][j]表示从i到j的子串为回文串,对于dp[i][j]可分为三种情况:1.子串长度为1,即i==j,此时dp[i][j]=true2.子串长度为2,即j-i==1,此时若s[j]==s[i],则dp[i][j]=true原创 2020-08-26 17:41:54 · 112 阅读 · 0 评论 -
【Leetcode】第33场双周赛T1558 得到目标数组的最少函数调用次数
题目给你一个与 nums 大小相同且初始值全为 0 的数组 arr ,请你调用以上函数得到整数数组 nums 。请你返回将 arr 变成 nums 的最少函数调用次数。答案保证在 32 位有符号整数以内。题目链接思路参考了这位巨巨的思路。zerotrac正向思考不行就反向思考,把问题转换为将nums采用单个-1或全部除以2的操作全变为0的最小步数。对偶数来说,除以2的操作优于-1。对奇数来说,先减1再除以2的操作最优。所以可以先将nums数组中的奇数先全部转换为偶数,再对整个数组除以2。重原创 2020-08-23 17:12:37 · 127 阅读 · 0 评论 -
【Leetcode】leetcode201 数字范围按位与 题解
leetcode201题解题目思路代码题目给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0题目链接思路好久没有做题了,看到今天的每日一题是中等难度就冒个泡水一发。看到位运算先找找规律: 22&23=0\ 2^2 \& 2^3=0 22&23=0 原创 2020-08-23 12:00:30 · 210 阅读 · 0 评论