若木方林
码龄7年
关注
提问 私信
  • 博客:16,584
    16,584
    总访问量
  • 35
    原创
  • 952,631
    排名
  • 1
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:荷兰
  • 加入CSDN时间: 2018-05-13
博客简介:

qq_42199045的博客

查看详细资料
个人成就
  • 获得23次点赞
  • 内容获得1次评论
  • 获得7次收藏
创作历程
  • 35篇
    2020年
成就勋章
TA的专栏
  • LEETCODE
    28篇
  • 数据结构
    1篇
  • JavaScript
    2篇
  • JAVA基础
    2篇
兴趣领域 设置
  • 数据结构与算法
    排序算法推荐算法
创作活动更多

仓颉编程语言体验有奖征文

仓颉编程语言官网已上线,提供版本下载、在线运行、文档体验等功能。为鼓励更多开发者探索仓颉编程语言,现诚邀各位开发者通过官网在线体验/下载使用,参与仓颉体验有奖征文活动。

368人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【LLETCCODE】32.最长有效括号

题目给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。思路判断有效的字符长度,很容易想到使用栈结构。如果是“(”:则将左括号的下标推入栈中;如果是“)”:如果栈为空,证明此时右括号是非法的,将右括号的下标推入栈中,作为下一个有效括号的起点前一个坐标;如果栈不为空,即有效括号的长度为栈弹出最上层栈中内容后,maxLen=Math.max(maxLen,i-stack.peek()).代码class Solution { public int longe
原创
发布博客 2020.07.04 ·
2254 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】718.最长重复子数组-动态规划+滑动窗口

题目给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。思路设数组A长度为n,B长度为m动态规划:设置动态规划数组dp[n+1][m+1],dp[n][m]=0。从A[n-1]和B[m-1]开始向前遍历比较,可以得出伪代码:if A[i]==B[j]: dp[i][j]=dp[i+1][j+1]+1;else if A[i]!=B[j]: dp[i][j]=0;滑动窗口:滑动窗口的示意图如下图所示:代码...
原创
发布博客 2020.07.01 ·
242 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LEECODE】215.数组中的第K个最大元素

题目在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。思路找第k个最大元素很容易想到排序算法。该题可以使用堆排序进行排序,然后删除k-1个节点,即可以得到第k个最大元素。具体的实现思路见代码注释。代码class Solution { public int findKthLargest(int[] nums, int k) { int heapSize=nums.length; bui
原创
发布博客 2020.06.29 ·
7098 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】209.长度最小的子数组

题目给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。思路找到最小的连续子数组,最少需要遍历一次数组。且连续子数组可以通过两个指针进行指示。因此想到使用双指针法来完成本题。代码class Solution { public int minSubArrayLen(int s, int[] nums) { //O(n)双指针 int n=nums.le
原创
发布博客 2020.06.28 ·
100 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LLETCODE】124.二叉树中的最大路径和

题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。思路先考虑一个7个节点的完全二叉树。想要遍历所有可能的路径,可以采用后序遍历的方法由上至下遍历。因为需要找到最大路径和,在遍历一个节点时,需要找到路径和最大的分支,对应的思路为:1.路径和应当pathVal>=0,当路径和小于0时,就以该节点为路径的起始点。2.如果该点的左右分支均大于0,此时应当返回左、右分支中较大的一支与该节点值的和。
原创
发布博客 2020.06.21 ·
160 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】125.验证回文串

题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。分析使用双指针的方法遍历整个字符串,判断字符串是否是回文字符串。几个要点:1.Character.isLetterOrDigit()用来判断当前字符是否是字母和数字字符。2.Character.toLowerCase()将大写字母转化为小写字母,再进行比较。代码class Solution { public boolean isPalindrome(String s) { int le
原创
发布博客 2020.06.19 ·
77 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】二叉树的序列化和反序列化

题目序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。思路使用递归实现二叉树前序遍历和反序列化。代码/** * Definition for a binary tree node. * publ
原创
发布博客 2020.06.16 ·
166 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】739.每日温度

题目根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。思路思路一(暴力解法):在每一个时间节点i向后找
原创
发布博客 2020.06.11 ·
104 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】9.回文数

题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。思路题目要求不能使用字符串解决,很自然的想到将数字分成前半部分和后半部分。将后半部分反转后与前半部分进行比较,如果两者一直则是回文数。这对于int类型而言是很容易实现的,因为后半部分可以通过x%10得到最后一位的值,前半部分则可以通过x/10去掉最后一位值。退出循环的条件是:后半部分的值>前半部分的值。特殊情况:int为负数时,一定不是回文数;int的最后一位是0时,一定不是回文数。通过上述思
原创
发布博客 2020.06.10 ·
89 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】46.把数字翻译成字符串

题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。思路使用动态规划。判断第i个字符时,需要判断str.substring(i-1,i+1)对应的数字是否有对应的字母。如果有,则当前的翻译方法dp[i]=dp[i-2]+dp[i-1];如果没有,则当前的翻译方法dp[i]=dp[i-1]。代码class Solutio
原创
发布博客 2020.06.09 ·
98 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】990.等式方程的可满足性

题目给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b"。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。思路将等式两端的字母建立为并查集,然后检查不等式中是否有并查集中的连通分量。代码class Solution { public boolean equationsPo
原创
发布博客 2020.06.08 ·
110 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】128.最长连续序列

题目给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。思路一次遍历无法找到整个连续序列最长的子序列。如果使用暴力解法需要O(n^2),不满足题目要求。因此考虑使用哈希表解决问题。1.遍历一次数组,将数组中所有数据入哈希表;2.找到序列最长的子序列:因为要求时间复杂度最小,因此需要避免一个子序列中的多个元素被重复判断多次。解决这个问题的方法是:每次判断前,确定当前数据num没有前驱,即不存在numSet.constains(num-1)。这样可以保证每一个子
原创
发布博客 2020.06.06 ·
99 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】238.除自身以外数组的乘积

题目给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。请不要使用除法,且在 O(n) 时间复杂度内完成此题。思路由于不能使用除法,且要在O(n)时间复杂度内完成题目。因此将每一个数组位置对应的乘积值转化为output[i]=i左侧的所有数乘积*i右侧的所有数乘积。计算左侧的乘积,可以让数组从前向后循环,即可完成;但是一次循环无法同时完成左侧和右侧的统计,因此需要从后
原创
发布博客 2020.06.04 ·
99 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java数组实现起泡排序/归并排序/二分查找/斐波那契查找/Fibonacci查找

二分查找时间复杂度:O(logn)算法的思路是:1.区间为左闭右开[lo,hi)2. 每次while循环只进行一次大小判断e<nums[mid],使代码每次判断的时间常量更小。public static int binSearch(int[] nums, int lo, int hi, int e){ while(lo<hi){ int mid = (lo+hi)>>1; if(e<nums[mid])
原创
发布博客 2020.06.02 ·
166 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】面试题64. 求1+2+…+n

题目求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路不使用乘除法计算1+2+…+n,自然地想到要使用循环完成代码。又由于不能使用题目上述关键字和判断语句,于是可以想到使用递归代替循环操作。代码class Solution { public int sumNums(int n) { boolean flag=n>0&&(n+=sumNums(n-1))<
原创
发布博客 2020.06.02 ·
184 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

【LEETCODE】101. 对称二叉树

题目给定一个二叉树,检查它是否是镜像对称的。思路采用递归的思路,进行迭代完成。代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public boolean
原创
发布博客 2020.05.31 ·
90 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】198.打家劫舍

题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。思路打家劫舍的问题首先要想到动态规划。定义数组dp[n].在数组第i(i>1)位,有两种可以选择的情况:打劫该位,则此位置dp[i]=dp[i-2]+nums[i];不打劫该位,则dp[i]=d
原创
发布博客 2020.05.29 ·
241 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】974. 和可被 K 整除的子数组

题目给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。思路涉及连续子数组的问题,考虑使用前缀和解决问题。即存储A[0]至当前数组项的和sum。本题中,(A[j]-A[i])%K==0时,表示该区间为符合条件的子数组,即A[j]和A[i]有相同的余数。=>根据上述分析将该题转化为:查找当前数组所有前缀和余数相同的项目。代码class Solution { public int subarraysDivByK(int[] A, int K) {
原创
发布博客 2020.05.27 ·
180 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】105. 从前序与中序遍历序列构造二叉树

题目根据一棵树的前序遍历与中序遍历构造二叉树。思路递归思路参考官方视频讲解代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { private Map<I
原创
发布博客 2020.05.22 ·
125 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LEETCODE】5. 最长回文子串

题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。思路使用中心扩展算法。字符串每个字符为起点,有两种可能的回文子串。第一是以i为中心,第二是以(i,i+1)为中心。所以将每个字符的两种情况为中心,向外扩展,直到到达边界或者字符不是回文子串为止。代码class Solution { public String longestPalindrome(String s) { int len = s.length(); i
原创
发布博客 2020.05.21 ·
99 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多