LeetCode--JAVA练习
Robis123
这个作者很懒,什么都没留下…
展开
-
LeetCode203.移除链表元素(Java)
LeetCode203.移除链表元素题解原创 2022-08-19 17:28:27 · 215 阅读 · 0 评论 -
LeetCode704.二分查找(Java)
leetcode704题解原创 2022-08-11 21:13:35 · 235 阅读 · 0 评论 -
LeetCode707.设计链表
题目链接 LeetCode707.设计链表 思路 按照题意模拟即可,我添加了头结点、尾结点、链表长度这几个长度进行辅助。有些细节需要注意,比如每次增删数据长度要变化,增删节点在头尾部需要更新head、tail,第一次添加元素需要对head、tail赋值等。 代码 class ListNode{ int val; ListNode next; ListNode(){} ListNode(int x){val=x;next=null;} ListNode(int x,Li原创 2022-02-18 10:34:10 · 161 阅读 · 0 评论 -
LeetCode209.长度最小的子数组
题目链接 LeetCode209.长度最小的子数组 整体思路 我首先想到的解答方法是采用滑动窗口,题目底部提到使用O(nlogn)的方法去解决,所以又想了第二种解答方法,即进行累加再采用二分的方法查找。 详细解答 1.滑动窗口的方法 先取l=0,r=0,然后l不变,r向右滑动直到[l,r)区间的数字之和sum>=target(若不存在则答案为0),此时我们可以得到以l为下限得到的最小答案。然后将l右滑,r固定,直到sum-nums[l]<target,此时我们又可以得到一个答案,将目前得到的答案原创 2022-02-17 11:24:04 · 254 阅读 · 0 评论 -
leetCode.59螺旋矩阵2
leetCode.59螺旋矩阵2题目链接整体思路详细描述代码 题目链接 59螺旋矩阵2 整体思路 dfs+模拟 详细描述 根据题目和样例及数据大小我们可以得知,该题目是一个模拟题,只需要按照要求做就好了,题目要求按照顺时针螺旋排列[1,n^2]区间的数字,如果从(0,0)出发,则顺时针顺序是左->下->右->上->左->下->右->上->…,故总体上我们可以以这样顺序去排列数字,使用dfs可以使代码更简洁,用for循环应该也可以。 代码 class Solut原创 2022-02-17 11:06:58 · 153 阅读 · 0 评论 -
LeetCode--11.盛最多水的容器(JAVA)
题目链接:盛最多水的容器 思路:并未想到使用双指针法,我的思路是遍历所有的木板长度,并假设当前木板长度为最短,然后分别向两端查找最远的比当前木板更长的木板,此过程中采用了数组模拟的单调递增栈维护比当前木板更长的木板,并采用二分进行查找,时间复杂度应该是O(n*log2n),LeetCode的许多题解使用的双指针法简单明了且复杂度为O(n)。 class Solution { public int maxArea(int[] height) { int len=height.lengt原创 2021-06-30 15:43:12 · 94 阅读 · 0 评论 -
LeetCode--2.两数相加(JAVA)
题目:用链表模拟两数相加 代码如下 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.ne原创 2021-06-27 15:31:32 · 95 阅读 · 0 评论 -
LeetCode--1.两数之和
暴力解法 运行时间68ms class Solution { public int[] twoSum(int[] nums, int target) { int n=nums.length; int[] ans=new int[2]; ans[0]=ans[1]=-1; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(nums[i]原创 2021-06-27 14:19:25 · 68 阅读 · 0 评论