
LeetCode
早餐加个蛋
这个作者很懒,什么都没留下…
展开
-
二叉树-前中后序遍历(递归与非递归)
二叉树-前中后序遍历public class Node(){ private int val; private Node left; private Node right;}二叉树的前中后序打印递归方式前序遍历 根左右public void preOrderRecur(Node head){ if(head == null){ return; } System.out.print(head.val+""); preOr原创 2021-12-03 16:20:19 · 220 阅读 · 0 评论 -
逆序一个栈
逆序一个栈题目给出一个栈,逆序这个栈,不申请额外的空间,只用递归,如何实现?思路每次调用递归,就会创建一个新的方法栈空间,该空间可以做很多操作呦!也可以理解为上下文代码(逆序打印) // 逆序栈方法 public static void reverseStack(Stack<Integer> stack,int size){ if (stack.size() == 1) { System.out.println(stack.pop())原创 2021-07-28 12:56:36 · 313 阅读 · 0 评论 -
汉诺塔问题1
汉诺塔问题1有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方;如图:思路1、把1~N-1 个圆盘移动到B柱2、把N圆盘移动到C柱如此继续反复拆分子问题代码实现public void hannoiTower(int N,String from,String to,String other){ if(N==1){ System.out.println("Mov原创 2021-07-28 11:12:25 · 120 阅读 · 0 评论 -
剑指 Offer 52. 两个链表的第一个公共节点
两个链表的第一个公共节点题目链接输入两个链表,找出它们的第一个公共节点。如下面的两个链表:链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点思路分别对两条链表进行遍历:当第一条链表遍历完,移动到第二条链表的头部进行遍历;当第二条链表遍历完,移动到第一条链表的头部进行遍历。如果存在交点:第一条链表首次到达「第一个相交节点」的充要条件是第一条链表走了 a + c + b 步,由于两原创 2021-07-21 16:53:04 · 98 阅读 · 0 评论 -
矩阵最小路径和
题目给定一个矩阵m,从左上角开始只能向右或者向下走,最后到达右下角的位置,路径上的所有的数字累加起来就是路径和,返回所有的路径中最小的路径和举例[1,3,5,9],[8,1,3,4],[5,0,6,1],[8,8,4,0]题解(Python)import numpy as nparr_two = np.array([[1,3,5,9],[8,1,3,4],[5,0,6,1],[8,8,4,0]])# 二维数组 行数 len(arr_two)# 二维数组 列数 len(arr_tw原创 2021-07-20 13:28:00 · 285 阅读 · 0 评论 -
leetcode169. 多数元素
题目链接给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority-element著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路通过数据结构栈来解决这个问题规则:当栈为空,元素入栈当栈顶元素=当前元素,元素入栈否则出栈代码实现(原创 2021-07-20 09:43:11 · 116 阅读 · 1 评论 -
leetcode1846: 减小和重新排列数组后的最大元素
减小和重新排列数组后的最大元素题目链接 给你一个正整数数组 arr 。请你对 arr 执行一些操作(也可以不进行任何操作),使得数组满足以下条件: arr 中 第一个 元素必须为 1 。 任意相邻两个元素的差的绝对值 小于等于 1 ,也就是说,对于任意的 1 <= i < arr.length (数组下标从 0 开始),都满足 abs(arr[i] - arr[i - 1]) <= 1 。abs(x) 为 x 的绝对值。 你可以执行以下 2 种操作任意次: 减小 arr原创 2021-07-15 13:01:33 · 142 阅读 · 0 评论 -
leetcode88:合并两个有序数组
合并两个有序数组题目给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例 2:输入:n原创 2021-07-14 15:09:14 · 89 阅读 · 0 评论 -
LeetCode1818:绝对差值和
绝对差值和题目链接:给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n 。数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)的 总和(下标从 0 开始)。你可以选用 nums1 中的 任意一个 元素来替换 nums1 中的 至多 一个元素,以 最小化 绝对差值和。在替换数组 nums1 中最多一个元素 之后 ,返回最小绝对差值和。因为答案可能很大,所以需要对 109 + 7 取余 后返回。原创 2021-07-14 13:48:44 · 163 阅读 · 0 评论 -
数组中数字出现的次数
剑指 Offer 56 - I. 数组中数字出现的次数题目:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]解答:public class leetCode56 { public static i原创 2021-07-13 14:40:27 · 90 阅读 · 0 评论