- 博客(17)
- 收藏
- 关注
原创 力扣第236题二叉树的最近公共祖先合并两个有序数组
题目:思路:1.分为三种情况第一种当p跟q都不在root为跟的树中直接返回为空2.第二种如果p和q只有一个存在于root为根的树中,函数返回该节点3.第三种p跟q都在以root为根的树中,那么left跟right一定为p跟q4.使用递归classSolution{publicTreeNodelowestCommonAncestor(TreeNoderoot,TreeNodep,TreeNodeq){if(root==nul...
2022-04-28 23:09:44
2221
原创 力扣第33题搜索旋转排序数组和第160相交链表
题目:思路:就是将数组遍历,然后判断是否有输出值,有就输出下标class Solution {public int search(int[] nums, int target) {for(int i=0; i < nums.length;i++){if(nums[i]==target){return i;}}return -1;}}题目:思路:定义两个指针,依次循环两个链表,然后判断两个指针的值是否相等,然后输出publicc...
2022-04-26 21:15:02
742
原创 力扣第103题二叉树的锯齿形层次遍历和第141题环形链表
题目:思路:1.将当前根节点存入队列中,然后将值记录下来后将该数据从队列中删除2.使用Deque双端队列接收录下来的值3.使用flag判断层数,根据层数实现不同的添加顺序到双端列表中classSolution{publicList<List<Integer>>zigzagLevelOrder(TreeNoderoot){List<List<Integer>>lists=newLinke...
2022-04-25 22:34:18
631
原创 力扣第121题买卖股票的最佳时机和第102二叉树的层序遍历
题目:思路:1.先定义一个最小值,一般将第一个数定义位最小值2.然后遍历,如果后面的值比最小值还要小,那么就将当前值替换为最小值,如果大于最小值则计算差值,然后比出最大值classSolution{publicintmaxProfit(int[]prices){intres=0;intmaxprofile=0;intminPrice=prices[0];for(int...
2022-04-24 18:57:42
1629
原创 力扣第912题排序数组和第53题最大子序和数
题目:思路:1.第一想法就是用冒泡排序,但是会超出时间限制2.这道题用快速排序最快classSolution{publicint[]sortArray(int[]nums){quickSort(nums,0,nums.length-1);returnnums;}publicvoidquickSort(int[]nums,intleft,intright){...
2022-04-23 22:31:02
392
原创 力扣第215数组中的第k个最大数和第25题k个 一组反转链表
题目:思路:1.使用优先队列将数组的数据添加,所以数据是从上到下依次以从小到大排序下来2.然后将超出k个元素的堆删除,会将顶端数据删掉,这是
2022-04-22 18:29:23
373
原创 力扣第206题反转链表和第146LRU缓存机制
题目:思路:1.定义三个指针,分别为反转后newHead,当前头指针cur和下一个指针next2.将反转的newHead初始换,然后让反转后的指针代表的值赋值给cur.next3.然后循环,当next为空时结束循环classSolution{publicListNodereverseList(ListNodehead){if(head==null)returnhead;ListNodene...
2022-04-21 16:00:49
329
原创 力扣第17题电话号码的字母组合和第18题四数之和
题目:思路:1.排列组合一般都是用回溯算法来计算的2.先对输入的进行为null和空判断3.使用map存入键值对,先从下边为0开始遍历,使用递归,当组合数长度等于输入的长度时代表组合完成classSolution{publicList<String>letterCombinations(Stringdigits){List<String>lists=newArrayList<>();if...
2022-04-20 23:46:46
95
原创 力扣第15题三数之和和第16题最接近的三数之和
题目:思路:1.先将输入的数组进行排序2.对第一个数据进行判断,第一个必须位负数,大于零才可能三位数的之和为零3.使用双指针,从第一个数据的后一位开始向后循环进位,后面的指针从最后一位开始进位4.要进行去重,因为要考虑例如[-1,-1,0,2,2]因为数组中有相同数据,所以在循环的时候会多次运算一遍,但是得出结果只能是一组相同的,所以进行判断,相同则直接跳过这一位;classSolution{publicList<List<Integer>>...
2022-04-19 16:16:13
122
原创 力扣第11题盛最多水的容器和第12题整数转罗马数字
题目:思路:1.用双指针分别从头跟末尾开始执行2.如果左边的高度小于右边时向右进一,右边小于左边向左进一,同时算出体积,使用max函数比较大小,循环完后出差最大体积classSolution{publicintmaxArea(int[]height){intleft=0;intright=height.length-1;intres=0;while(left<right){...
2022-04-18 17:05:44
641
原创 力扣第七题整数反转和第八题字符串转换整数
题目:思路:1.将整数从个位依次循环拿出在依次循环进位2.返回结果进行判断是否在帧数范围内classSolution{publicintreverse(intx){longresult=0;if(x==0)return0;while(x!=0){result=result*10;result+=x%1...
2022-04-18 00:09:37
132
原创 力扣第四题寻找两个正序数组的中位数,第五题最长回文数和第六题z形变化
题目:思路:1.先将两个正序数组合并成有序数组2.然后根据数组的长度是否为奇偶数,然后求中位数classSolution{publicdoublefindMedianSortedArrays(int[]nums1,int[]nums2){int[]arr=newint[nums1.length+nums2.length];intindex1=0;intindex2=0;...
2022-04-17 01:25:15
154
原创 力扣第二题两数相加跟第三题无重复最长字串
题目:思路:1.定义头节点跟哨兵节点,先用头节点指向两个链表的相同下标,然后将值相加,进行进为处理2.建立一个新的List Node链表,将值传入进去3.同时哨兵节点记录,依次循环没有进位时结束循环classSolution{publicListNodeaddTwoNumbers(ListNodel1,ListNodel2){ListNodedummy=newListNode(0);ListNodep=dumm...
2022-04-15 23:41:36
323
原创 力扣第26题删除有序数组的重复项,第27题移除元素和第28题实现strStr()
题目:思路:1.可以使用双指针来处理这道题目,定义一个快指针跟面指针2.快指针先向前走,然后讲快指针与慢指针的的值进行对比,如果不相同则让慢指针向前进,相同则不动,等fast指针遍历完数组后,nums[0,slow]则为不重复元素;classSolution{publicintremoveDuplicates(int[]nums){if(nums.length==0){return0;}...
2022-04-14 16:28:02
249
原创 力扣第二十题有效括号很第二十一题合成两个有序链表
题目:思路:1.先将输入的括号进行遍历,然后进行判断将左边类型的括号的存入栈中2.将右边类型的括号用方法进行替换成相同类型的左边括号,然后进行对比3.因为栈是先进后出,所以使用在使用最近的右边括号转化后使用peek方法返回栈 顶进行对比,对比完成后弹出栈顶元素,循环下次4.栈 的isEmpty返回 为真。classSolution{publicbooleanisValid(Strings){Stack<Character>...
2022-04-13 16:02:20
511
原创 力扣第13题罗马数字转整数和第14题最长公共前缀
题目:罗马数字转整数思路:1.因为字符对应的数值都不一样,所以我们这里可以使用map将这些键值对的方式添加在map函数里。2.要判断是否是一个字符组成,如果是一个字符组成,那返回对应的值3.有题目得知当左边的数字小于右边的时候则是后面减去前面,反之则相加4.先将输入的字符进行遍历,然后累加和,最后返回;classSolution{publicintromanToInt(Strings){Map<Character,Intege...
2022-04-12 17:31:29
63
原创 力扣第一题两数相加和第九题回文数
题目:两数相加给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。思路:1.使用hash表,因为hash表可以在一定程度上减少时间复杂读2.由于返回结果时数字且限定了位数,所以先定义一个长度为2的数组3.使用hash表将整数目标值跟和数组中的每个数字的差值作为key,数组下表作为val
2022-04-11 23:15:36
128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人