自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 一刷31-阶乘0的个数

找有多少个5能乘成因为0因为乘10,10=5x2;2的因子比5多 public int trailingZeroes(int n) { int num=0; for(int i=1;i<=n;i++){ int N=i; while(N>0){ if(N%5==0){ num++; N=N/5;

2021-09-19 17:02:46 126

原创 一刷29-从根节点到叶子节点和为某一值

是否存在和为某一个固定值没做过,看答案,看懂了,我觉得自己记不住终止条件两个,如果根节点空false如果这个点是叶子节点,比较它的值和sum减去根节点的值,同true,异false。想象成只有一个节点就很简单最后,左右有一个为true结果就为true了 public boolean hasPathSum(TreeNode root, int targetSum) { if(root==null)return false; if(root.left==null&

2021-09-19 16:34:18 107

原创 二刷29-判断二叉树是否对称

第三次做了,但是,仍然忘了,这回应该忘不了了吧====判断二叉树是否对称,判断它的左右子树是否对称判断它的左右子树是否对称写个函数,对应节点是否相等,两个节点是否同时为空,还是有一个为空,两个节点值是否相等,然后接着比,左的左和右的右比,左的右和右的左。到全为null就到底儿了,true。 public boolean isSymmetric(TreeNode root) { if(root==null)return true; return isSym(root

2021-09-19 16:01:30 95

原创 二刷28-回文链表

咋办,我叛逆的拖延症犯了,不想背面经,只能刷刷题啊啊啊啊啊啊,不想背啊,头疼回文链表最简单的思路是存到一个集合里,然后双指针遍历比较第二种是翻转一半链表,那种先不想了,找中间节点,一个走两步,一个走一步。 public boolean isPalindrome(ListNode head) { List<Integer> list=new ArrayList<>(); ListNode cur=head;

2021-09-19 15:23:14 73

原创 二刷27-最小栈

主要想通过栈找出一个最小值于是整两个栈,一个正常放,另一个放比字节栈顶元素小的值,这样第二个栈的栈顶就一直是最小的值了。出栈也是,如果栈1和栈2顶元素相同,栈2中的元素才出栈class MinStack { Stack<Integer> stack1; Stack<Integer> minstack; /** initialize your data structure here. */ public MinStack() {

2021-09-19 14:47:26 39

原创 二刷26-二叉树的直径

这道题一上来我就犯了所有人都会犯的错误,其实最长的路径不一定经过根节点啊。直径,即求两个节点间路径的最大值。即一个根节点的左子树的深度+右子树的深度(深度是节点数)但是不知道是哪个节点的左右子树和最大,所以每个节点都要算一下。求深度时就算了每个节点,所以就在求深度的函数里加一条比较。max是放在外面的变量。class Solution { int max=0; public int diameterOfBinaryTree(TreeNode root) { depth

2021-09-19 13:47:56 43

原创 二刷25-判断平衡二叉树

平衡二叉树:任意节点左右子树深度差不大于1暴力,从上到下判断,每个子树是否是平衡二叉树1、写一个函数,计算树的深度(即二叉树的最大深度那道题)2、从上到下递归判断子树是否为平衡,即高度差是否小于2,不小于返回false,小于继续迭代,直到达到null,证明这个子树到头了是平衡的返回true,所以这是一个终止条件。左右子树相与,都平衡,才返回平衡true public boolean isBalanced(TreeNode root) { if(root==null)retur

2021-09-19 11:00:06 90

原创 二刷24-二叉树最大深度

这是我第四遍做这道题,就这两句话啊,记不住,你说我没理解吧,每次也挺理解的。下次再错撞豆腐得了 public int maxDepth(TreeNode root) { if(root==null)return 0; return Math.max(maxDepth(root.left),maxDepth(root.right))+1; }重点在于最大深度就是左右子树的最大深度。层序遍历也可,懒得做了...

2021-09-19 10:14:32 47

原创 二刷23-倒数第k

做过很多遍了,简单 public ListNode getKthFromEnd(ListNode head, int k) { ListNode l1=head,l2=head; int i=0; while(i<k){ l1=l1.next; i++; } while(l1!=null){ l1=l1.next; l2

2021-09-19 09:29:04 42

原创 二刷22-中序遍历

1、递归 public List<Integer> inorderTraversal(TreeNode root) { List<Integer> list =new ArrayList<>(); inor(root,list); return list; } public void inor(TreeNode root,List<Integer> list){ if(ro

2021-09-19 09:14:41 57

原创 二刷21-用栈实现队列

没啥好说的 public MyQueue() { Stack<Integer> stack1=new Stack(); Stack<Integer> stack2=new Stack(); } Stack<Integer> stack1=new Stack(); Stack<Integer> stack2=new Stack(); /** Push element x to the back of queue

2021-09-18 21:46:33 48

原创 是否有冒泡居然写错了的烦恼

刚刚朋友面招联,被一个冒泡排序卡住了,没写对,她非常难过。毕竟她也刷了挺多题,背了一个月面经的。然后我发现我知道冒泡是怎么排的,但也写不对,就写了一下,总之就是基础太差啦。我认。public class Maop { public static void main(String[] args) { Maop maop=new Maop(); int[] nums={1,2,9,6,3}; nums=maop.maoPao(nums);

2021-09-18 10:48:22 83

原创 二刷20-跳台阶

不论是人爬楼梯还是青蛙跳台阶,我做了一百遍了,为什么还是会愣住呢,更搞笑的是我以前吐槽的话我现在毫无印象。如图所示,那时候还能想到斐波那契,现在什么也想不到了,唉,不会真的老年痴呆吧。。。。 public int numWays(int n) { int[] dp=new int[n+1]; if(n==0||n==1) return 1; dp[0]=1; dp[1]=1; for(int i=2;i

2021-09-17 19:53:30 44

原创 一刷19-链表和

这道题没做过。1、将链表反转2、将链表逐位相加,新建一个节点放相加结果,并且计算一次新建一个节点。当第一个链表的节点不为空时,加第一个链表的节点,next当第二个链表的节点不为空时,加第二个链表的节点,next再和进位相加这个和决定进位和存入节点的数,新节点nextpublic ListNode reverseList(ListNode head){ if(head==null)return null; ListNode pre=null; Li

2021-09-17 08:56:18 55

原创 二刷18-最长回文子串

自从签了个国企,就失去了拼搏的动力。因为觉得国企也挺难进,进去的人学历都不比我差,在性价比高的城市855不好吗。还稳定。主要觉得自己大城市怎样都买不起房子,干几年回到小城市又没有什么工作机会。这个国企缺点是钱少,也就互联网的一半吧,而且国企弊病,谁知道多年后你能赚的是人家的几分之几呢。不过每一种选择都有它的长处和短处,我既然做了选择就代表我愿意忍受它 的短处。希望选择过后是洒脱,因为后悔向来无意义。但是下周还有华为面试,还是干一干吧,毕竟也学了一段时间,躺平总觉得好像白干了,希望是我能做选择,而不是我不

2021-09-16 15:12:16 49

原创 。。。。。。

不想干了,呜呜。还是有很大概率不当程序员了

2021-09-15 14:34:33 56

原创 二刷17-寻找旋转排序数组里的值

这个题我十天前刚做过,脑子里只蹦出了二分法。然后没了。这道题两种方法,第一种稍微麻烦1.用之前二分法的题寻找旋转数组的最小值(中间值和右边界值比较)2.判断待查找的值在最小值的左还是右,然后对所在的区间再来一次二分法。第二种其实和第一种含义是一样的,不断寻找目标值的区间,在中间值的左还是右1、中间值和右边界比较,若右边界比中间值大,代表中间值右边有序。若右边界比中间值小。代表左边有序。2、目标值和有序区间对比,看是否在有序区间内,在的话,在这个区间继续这样二分。若是不在的话,在另一个区间这样二

2021-09-05 09:06:43 41

原创 一刷16-求两字符串数之和

这是一道简单题,求两个数的和,数是字符串。于是就从末位开始加,一个变量放进位。在指针不全小于零的情况下不断循环,当有一个指针比零小了,那么就给它赋值0.整了个StringBuffer,给它appendpublic String addStrings(String num1, String num2) { //用补零 int i=num1.length()-1; int j=num2.length()-1; int jin=0;

2021-09-04 21:46:13 189

原创 二刷15-二叉树的最近公共祖先

这个题可太有意思了,我以前做的时候在笔记本上写着:此题会忘从根节点到目标节点中间所有的节点都是祖先。如果是最近的公共祖先的话那么两个目标节点一定在根节点两边。想象从叶子节点向上返回节点值。如果有一个是目标节点,那向上返回这个节点。如果两个都是目标节点,向上返回根节点如果两个都不是,返回空。特殊的判断,如果根节点是空,直接返回空,也不用判断它的左右子树了,它就是叶子节点。如果已经找到了目标节点,那就返回目标节点。 public TreeNode lowestCommonAncestor(T

2021-09-04 15:19:02 44

原创 二刷14-有效括号

这题我也是三月做的,当时还做了总结,但这并不影响我忘记他,并且忘记了以前自己是怎么写对的。重写了一下,通过了,应该就没有错,虽然和答案不一样。用HashMap存键值,就可以通过键判断值们是否相同了! public boolean isValid(String s) { Stack<Character> stack=new Stack<>(); Map<Character,Character> map=new HashMap<&g

2021-09-03 21:40:10 51

原创 二刷13-合并两个有序数组

这个题是第一回做!用指针可以创新数组,但是题目的意思应该是就放在第一个数组里就可以了。条件只要有一个还没到头就得继续,把剩下一个遍历完放进去。注意要else,不然空指针。就是判断是否等于-1啦public void merge(int[] nums1, int m, int[] nums2, int n) { int i = m - 1; int j = n - 1; int k = m +n-1; while (i >=

2021-09-03 19:17:05 39

原创 二刷12-买股票的最好时机

其实拿到题是有点思路的,我知道它可以动态规划,但是我一直不太会动态规划,我就只是想逻辑关系,不过万变不离其中吧。给一个数组,找后边的数减前边数的最大值。对于某一个数而言,它减去前边的最大值,一定是它减去了前边所有数中最小的那个。所以要设计一个min边遍历边判断。找到了对于这个数而言的最大值,还要找到之前保存的最大差值,选大的作为最大值。保存在max里。于是复杂度On public int maxProfit(int[] prices) { if(prices.length==

2021-09-03 17:03:33 31

原创 二刷11-最小的k个数

说好去看看面试知识的,不想看,焦虑,控制不住只想做题。。。。最小的k个数,我一看题目,这不是和我昨天做的第k大的数一样吗?昨天直接写了个快排,分治什么的根本没看,以前看懂了忘了,现在懒得看了,怕乱。结果今天又遇到,我想那直接用堆吧,至少不会乱。优先队列就是用堆实现的,分为大根,小根。默认小根,大根的话要加(v1,v2)->v2-v11/最小的k个元素,是找最小的k个,建了一个大根堆,只要比大根堆的顶头大的就出堆入堆public int[] getLeastNumbers(int[] ar

2021-09-03 16:25:46 42

原创 二刷10-二叉树层序遍历

刷这道题时十分上火,因为我层专门做过二叉树的题,那时候感觉自己理解的很不错。几个月过去了,我全都不记得了。为什么记忆力这么差呢?????????????????????二叉树的遍历分为1.深度优先搜索 dfs 递归,这个是非常常用的,先中后序遍历用它2、广度,bfs ,这个应用在层序搜索中,也就是一个队列。所以层序遍历要用到队列,先来一个普通的层序遍历输出一个集合 public List<Integer> bianLi(TreeNode head){ Queue&l

2021-09-03 14:50:04 34

原创 二刷09-找链表相交节点

第三次做这道题了,思路很明确。然后就错了,翻出笔记,之前细细理解并总结了(我是真的失忆吗?为什么现在记忆力这么差啊,以前看过就能记住,现在疯狂记记不住)错点在于“else":如果把next的行为一起写在判断语句之外的话,在一个链表为空的情况下,它会变得和另一个链表重合。就错了。跳出循环是指他们同时为null就跳出了,以前不理解想开了记下来,再来第三遍还是忘了,人的大脑太可怕了,什么都能加工,都能忘记。public ListNode getIntersectionNode(ListNode head

2021-09-02 22:12:18 39

原创 二刷08-给两个链表排序连起来

这个题啊,做过n遍了,知道怎么做,但每次都有点问题。我想说你是怎么想的创建一个空节点空节点怎么可能有值呢,你放个值进去啊!肯定是两个都不为空啊,再出来判断当然,最后返回的是next哦public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode pre=new ListNode(-1); ListNode cur=pre; while(l1!=null&&l2!=n

2021-09-02 20:43:21 39

原创 二刷07-环形链表

这道题其实几天前刚做过,所以还记得,快慢指针,别的是细节问题。是可以写得更简单,但是我这样理解了,就这样吧。 public boolean hasCycle(ListNode head) { if(head==null||head.next==null)return false; ListNode node1=head; ListNode node2=head.next; while(true){ if(nod

2021-09-02 19:19:01 29

原创 二刷06-最大子序和

这也是三月做的题,我竟然自己给它写出来了,感动哭了不过因为没有判断只有一个数的情况和初始值一开始写错了,max初始值就应该设成第一个元素的大小。 public int maxSubArray(int[] nums) { int[] maxarr=new int[nums.length]; maxarr[0]=nums[0]; int max=nums[0]; if(nums.length==1){ return nu

2021-09-02 19:04:50 31

原创 二刷05-三数之和

这道题也是三月做的,我一点也不记得了。我现在的水平要是能面上开发我都觉得对不起那些做了很久题的人。。。。我真的是太不会规划时间了,每天还挺忙挺累的。1、寻找和为0的三个数,要求找到的集合不能重合。2、看到和为0,当想到排序。3、用i遍历数组,再添两个指针在数组首尾,移动两个指针,寻找能使nums[i]和那俩指针和为0的值,这样就不会有漏掉的了。4、三个数相加判断,如果和大于0,则应移动右指针,反之亦然。5、一直到两个指针重合,这一次循环才结束,关于nums[i]的才找完6、但是不能重复,所以当

2021-09-02 18:37:32 23

原创 二刷03-两数之和

就很简单啦,因为不用考虑别的乱七八糟的条件,哈希表就可以了 public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> map= new HashMap<>(); int a[]=new int[2]; for(int i=0;i<nums.length;i++){ if(map.containsKey(target-n

2021-09-02 15:50:25 29

原创 二刷-不重复的最长子串

这道题是三月做的,现在拿出来一脸懵逼。于是又去看了答案。发现就很简单。滑动窗口。说白了,就是把数组元素挨个往哈希表里放,键是数组元素(字符),值是元素序数(数组下标)。放之前先containsKey检查一下集合里有没有这个元素(有的话加入会覆盖),有这个元素的话,取这个元素的值+1,和上一次的左边界值比较,选大的作为新的左边界比如abbaa入集合b入集合发现集合中有b,left设为2(找到的b的下标加1),入集合,b的下标也被覆盖为2了到a,发现集合中有a,计算出找到的下标加1为1,比之前的

2021-09-02 09:32:28 39

原创 二刷-02快排

实际上已经是我第三次做了。但是理解不够深入加上记性太差,每次都只记得一部分。快排的步骤是很清楚了。O(nlogn)我的错点1、递归2、等于的时候也是要跳过的3、以最右的数为基准数,那指针要从左边走,这样最后指针相等时的值才是比最右大的值,才可以交换4、都是指针罢了 public void quickSort(int[] num,int low,int high){ if(low>=high){ return; } i

2021-09-01 17:08:01 28

原创 二刷-反转链表

用自己能倒腾过来的想法。三个指针,pre. cur. temp;由于cur!=null的条件的话,最后那行temp会执行temp.next,即null.next;所以条件位temp时最后一个没转过来。那最后再加一行让最后两个节点的连线翻转过来。public ListNode reverseList(ListNode head) { while (head == null) { return head; } ListNode pr

2021-09-01 15:44:32 30

原创 关于HashMap和LinkedHashMap的两道题

Leecode136.只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4这种找只出现一次的xxx,一般会想到用HashMap来实现。这道题也是。不过此题干较为简单,因为只有一个元素出现了一次,别的元素都确定出现了两次。不要求顺序等,因此如果用HashSet,进入集合时判断集合中是否存在对应元素,如果存在就删除,否则放入集合。这样集合

2021-07-22 17:04:52 99

原创 哈希表key-value

哈希表(遇到问题:搜索值很慢,搜索键很快,看到一段话大意如下,尚未完全理解)如果确定key 和value都是一一对应的话,可以把value和key调换位置来保存,这件检索速度就很快了,常数时间内就能完成。 如果不一一对应,不要用这种方式。数据量大时时间复杂度太高O(n),...

2021-07-18 20:04:49 574

原创 Java中的sort方法总结

Java中常用的数组或集合排序的方法有两个,一个是java.util.Arrays中的静态方法Arrays.sort(),还有一个是java.util.Collections中的静态方法的Collections.sort()方法。1.Arrays.sort()(1)Arrays.sort(int[] a)对一个数组的所有元素进行排序,按从小到大的顺序。(2)Arrays.sort(int[] a, int fromIndex, int toIndex)对数组部分排序,对数组a的下标从fromInd

2021-06-28 19:49:38 1591

原创 IDEA2020版本中创建Java Enterprise工程时没有出现web文件夹

1.在当前目录下打开cmd的方法:在当前目录下,按住shift键,右击鼠标,点击在此处打开cmd。不过在win10系统中打开的是PowerShell。2.在PowerShell中打开和关闭Tomcat服务器的命令分别是 .\startup和 .\shutdown 。.\shutdown可多执行几次至抛出异常才算成功关闭。(1.2与标题无关)3.在IDEA2020版本中,创建Java Enterprise工程时没有出现web文件夹。解决方法是:创建项目时首先创建一个普通工程。创建完成后,右键工程,选择

2021-06-09 21:06:39 4552 3

原创 JAVA集合中HashSet与HashMap的遍历方法

一、对 set 的遍历1.迭代遍历:Set<String> set = new HashSet<String>(); Iterator<String> it = set.iterator(); while (it.hasNext()) { String str = it.next(); System.out.println(str); } 2.for循环遍历:for (String str : set) { Syst

2021-03-17 14:35:43 307

原创 norms matlab

norms( X, [], DIM ) or norms( X, 2, DIM ) computes Euclidean normsalong the dimension DIM. norms( X, P, DIM ) computes its normsalong the dimension DIM.

2020-04-10 22:28:42 1386 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除