![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客+力扣
奶糖芯
成功之前说什么都是借口,
成功之后说什么都是炫耀。
展开
-
二叉树的公共祖先(LCA问题)
二叉树的公共祖先二叉树的公共祖先—力扣链接问题内容:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先输入输出示例:1.代码实现思路分析:如果其中一个是树的根,那么它一定就是公共祖先;接下来无法就是三种情况:全在左子树;全在右子树;一个在左子树,一个在右子树;/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *原创 2021-02-21 16:13:25 · 357 阅读 · 9 评论 -
环形链表(1.判断是否是环形链表,2求环形的长度,3.求环形链表的入环节点)
环形链表环形链表—力扣链接题目内容:给定一个链表,判断链表中是否有环输入输出示例:true1.代码实现方法一:利用HashSet的无重复性public static boolean hasCycle2(ListNode head) { //思路二:;利用HashSet的无重复性 if(head == null )return false; Set<ListNode> set = new HashSet<>();原创 2021-02-18 14:02:42 · 411 阅读 · 0 评论 -
俩个链表的第一个公共节点(相交链表)
俩个链表的第一个公共节点俩个链表的第一个公共节点—力扣链接相交链表—力扣链接题目内容:输入两个链表,找出它们的第一个公共节点。输入输出示例:代码实现方法一:采用HashSet,利用Hash的无重复性,找到直接返回,遍历完都没有找打,就返回空这种方法时间和空间复杂度都太高;public ListNode getIntersectionNode(ListNode headA, ListNode headB) { //思路一:采用HashSet,利用Hash的无重复性,找到直原创 2021-02-18 12:05:06 · 163 阅读 · 0 评论 -
判断链表是不是一个回文结构
链表的回文结构链表的回文结构—牛客网链接题目内容:对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。输入输出示例:输入:1->2->2->1输出:true1.代码实现方法一:首先将链表反转,然后遍历比较是否相等;反转链表的博客,有兴趣的可以去看看public boolean chkPalindrome(ListNode原创 2021-02-18 11:20:48 · 133 阅读 · 0 评论 -
删除链表中重复的节点
删除链表中重复的节点删除链表中重复的节点—牛客链接题目内容:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5输入输出示例:输入:{1,2,3,3,4,4,5}输出:{1,2,5}注意:相同的数字可不一定只有一组,因此一定要全部遍历完代码实现package 删除链表中重复节点;/** * 牛客网链接:https:原创 2021-02-17 22:59:22 · 182 阅读 · 0 评论 -
链表分割
链表分割链表分割—牛客链接题目内容:现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。代码实现package 链表分割;class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class Parti原创 2021-02-17 22:32:19 · 149 阅读 · 0 评论 -
合并俩个有序链表
合并俩个有序链表合并俩个有序链表—力扣链接题目内容:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入输出示例:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]代码实现package 合并俩个有序链表;/** * 力扣链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/description/ */class ListNode原创 2021-02-17 22:08:03 · 188 阅读 · 0 评论 -
链表的中间节点
链表的中间节点链表的中间节点—力扣链接题目内容:给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。输入输出示例:输入:[1,2,3,4,5,6]输出:此列表中的结点 4 (序列化形式:[4,5,6])由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/middle-of-the-linked-list著作权归领扣网络原创 2021-02-17 21:06:21 · 241 阅读 · 0 评论 -
反转链表
反转链表反转链表—力扣链接题目内容:反转一个单链表输入输出示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL代码实现注释将思路说的很清楚。package 反转链表;/** * 力扣链接:https://leetcode-cn.com/problems/reverse-linked-list/submissions/ */class ListNode { in原创 2021-02-17 20:45:24 · 129 阅读 · 0 评论 -
删除链表中的节点(移除链表元素)
删除链表中的节点删除链表节点—力扣链接移除链表元素—力扣节点题目内容:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。输入输出示例:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shan-c原创 2021-02-17 20:04:51 · 1031 阅读 · 0 评论 -
逆波兰表达式求值
逆波兰表达式求值逆波兰表达式求值—力扣链接题目内容:输入输出示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例2:输入: ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]输出: 22解释: 该算式转化为常见的中缀算术表达式为: ((10 * (6 / ((9 + 3) * -11))原创 2021-02-16 17:29:53 · 238 阅读 · 2 评论 -
二叉树的右视图
二叉树的右视图力扣链接—二叉树的右视图题目内容:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入输出示例:1…代码实现思路解析:首先从右边看,肯定看到每一层的最右边的那个节点;那么就要转换成为求每一层最右边的节点值;看到一层一层,想到广度优先遍历;只要把得到每一层的结果中最右边的值拿出来,放到结果集合中,就是终的结果;/** * Definition for a binary tree node. * public class Tr原创 2021-02-16 14:54:35 · 247 阅读 · 2 评论 -
乘积尾零
乘积尾零题目内容:如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?输入示例:5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 1486 5722 3135 1170 4014 5510 5120 729 2880 9019 2049原创 2021-02-13 15:19:35 · 283 阅读 · 2 评论 -
力扣 — 移除元素
力扣链接移除元素题的内容:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。示例1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。代码实现思原创 2021-02-09 22:02:26 · 151 阅读 · 0 评论 -
力扣 — 旋转数组
力扣链接旋转数组题的内容:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释: 向右旋原创 2021-02-09 21:47:18 · 404 阅读 · 0 评论 -
力扣 — 转换成小写字母
力扣链接转换成小写字母题的内容:实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例1:输入: "Hello"输出: "hello"示例2:输入: ""al&phaBET""输出: ""al&phabet""代码实现思路分析:首先是字母转换为小写字母,那么就要知道只需要将大写字母转换为小写字母即可(条件确定),其他字符均不需要转换;class Solution { publi原创 2021-02-09 21:33:56 · 232 阅读 · 2 评论 -
判断一个数是不是2的整数幂
判断一个整数是不是2的整数幂力扣链接-2的幂方法一:利用位运算中的与(&)运算class Solution { public boolean isPowerOfTwo(int n) { if(n < 1)return false; return (n&(n-1)) == 0; }}方法二:利用正常思路,每次从1开始,都乘2,知道刚好相等,就是2的整数次幂,如果超过n,那么肯定不是2的整数次幂;(注:该方法时间复杂度较高,在原创 2021-02-09 12:01:33 · 356 阅读 · 1 评论 -
牛客 — 左右最值最大差
左右最值最大差牛客网链接题的内容:给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0..K],右部分A[K+1..N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?测试方案:[2,7,3,1,1],5返回:6代码实现import java.util.*;public class MaxGap { public int findMaxGap(int[] A, int n) {原创 2021-02-05 21:36:58 · 287 阅读 · 4 评论 -
牛客 — 一个数出现奇数次
一个数出现奇数次下一篇博客俩个数出现奇数次牛客网链接题的内容:一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到这一个数?输入描述:第一行输入一个n代表,有个n个长度大小的数组第二行输入一个长度为n的数组输出描述:输出这个数组中出现奇数次的数示例1:输入:51 1 1 1 2输出:2代码实现思路:采用的是异或思想:根据俩个一模一样的数字异或的结果是0,那么出现偶数次异或之后是不是就是0,奇数次的数字是不是就是最后面异或的结果。第二种思路,就是采用Hash原创 2021-02-05 19:25:21 · 386 阅读 · 6 评论 -
牛客 —两个数出现了奇数次
俩个数出现了奇数次牛客网链接:题的内容:给定一个数组arr,其中只有两个数字出现了奇数次,其它数字都出现了偶数次,按照从小到大顺序输出这两个数。输入描述:第一行输入一个n,第二行输入n个数输出描述输出出现奇数次的两个数,按照从小到大的顺序。示例1输入:41 1 2 3输出:2 3示例2输入:611 22 11 23 23 45输出:22 45代码实现方法一:采用的是HashSet思路:直接遍历数组,将值加入到HashSet当中,如果第一次加入,set当原创 2021-02-05 19:08:31 · 1243 阅读 · 6 评论