算法
在线取网名
这个作者很懒,什么都没留下…
展开
-
回文链表Java
如果链表长度为偶数,则直接从第二个指针的位置开始对链表进行反转;如果是奇数,则从第二指针的下一位进行链表反转。原创 2023-10-30 22:20:55 · 247 阅读 · 0 评论 -
相交链表Java
相交链表元素为:ListNode{val=3, node=ListNode{val=4, node=ListNode{val=5, node=null}}}相交链表元素为:ListNode{val=3, node=ListNode{val=4, node=ListNode{val=5, node=null}}}给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 nu11。原创 2023-10-12 22:24:14 · 222 阅读 · 0 评论 -
找出一个数组中未出现的数Java
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1,n] 内。请你找出所有在[1,n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。找出一个数组中未出现的数:[5, 6, 0, 0, 0, 0, 0, 0]找出一个数组中未出现的数:[5, 6, 0, 0, 0, 0, 0, 0]原创 2023-10-07 22:25:06 · 284 阅读 · 0 评论 -
leetcode算法题-移动零Java
移动零:[1, 3, 12, 0, 0]原创 2023-09-26 21:15:56 · 141 阅读 · 0 评论 -
爬楼梯Java(斐波那契数列)
五阶楼梯有(1+1+1+1+1,1+1+1+2,1+2+2,1+2+1+1,1+1+2+1,2+1+1+1,2+2+1,2+1+2)八种方法,可以看出n阶楼梯是由(n-1) + (n-2)构成的,基数1阶为1,2阶为2.四阶楼梯有(1+1+1+1,1+2+1,1+1+2,2+2,2+1+1)五种方式。题目:有n阶楼梯,一次只能爬一层或者两层,请问有多少种方法?三阶楼梯有(1+1+1,1+2,2+1)三种方法。二阶楼梯有(1+1,2)两种方法。斐波那契数列结果为:89。斐波那契数列结果为:89。原创 2023-09-26 20:37:14 · 154 阅读 · 0 评论 -
田忌赛马Java
其实核心思想就是让A中的数最小且刚好大于B中数,我们可以用链表来存储A和B中对应的数据,至于B比A中所有的数都大的数据,则匹配我们A中剩余的数字即可(随意匹配即可).给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 Ai] > Bi] 的索的数目来描述。输出结果:田忌赛马结果是:[14, 11, 19, 9, 17, 13]返回 A的任意排列,使其相对于 B 的优势最大化.原创 2023-09-25 21:38:38 · 470 阅读 · 0 评论 -
打家劫舍3(二叉树型)Java
在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额.原创 2023-09-21 22:22:22 · 125 阅读 · 0 评论 -
打家劫舍2(首尾相连)Java
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。注意这里的房屋是连接成一个⚪。原创 2023-09-21 22:18:03 · 80 阅读 · 0 评论 -
打家劫舍Java
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。这里房屋的排列是一条线。原创 2023-09-21 22:15:33 · 141 阅读 · 0 评论 -
参议院算法Java
以轮为基础的过程从给定顺序的第一个参议员开始到最后一个参议员结束。所有失去权利的参议员将在过程中被跳过。禁止一名参议员的权利:参议员可以让另一位参议员在这一轮和随后的几轮中丧失所有的权利。宣布胜利: 如果参议员发现有权利投票的参议员都是同一个阵营的,他可以宣布胜利并决定在游戏中的有关变化。现在参议院希望对一个 Dota2 游戏里的改变作出决定,他们以一个基于轮为过程的投票进行。假设每一位参议员都足够聪明,会为自己的政党做出最好的策略,你需要预测哪一方最终会宣布胜利并在 Dota2 游戏中决定改变。原创 2023-09-21 21:22:21 · 117 阅读 · 0 评论 -
井字游戏Java
【代码】井字游戏Java。原创 2023-09-11 22:03:57 · 94 阅读 · 0 评论 -
香槟塔-算法
在倒第四杯后第三层中间的玻璃杯盛放了一半的香槟,他两边的玻璃杯各自盛放了四分之一的香槟。思路:往第一层杯子里面的倒入香槟,如果倒入一杯,则第一个杯子刚好满了,如果是两杯,则第一个杯子是满的,下一层的两个杯子分别为0.5杯,即当前杯子的水量=(父杯数-1)/2,如果当前杯数水量大于零,说明可能还会往下继续流,继续上面的操作即可;从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都会立刻等流量的流向左右两侧的玻璃杯。当左右两边的杯子也满了,就会等流量的流向它们左右两边的杯子,依次类推。原创 2023-09-07 21:36:49 · 76 阅读 · 0 评论 -
省份数量(并查集)
有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市c间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市给你一个nxn 的矩阵 isConnected ,其中isConnected[i]li] =1表示第i个城市和第j个城市直接相连,而 isConnected[i]li] = 0表示二者不直接相连。返回矩阵中 省份 的数量.扩展:朋友圈问题,亲戚问题等。原创 2023-08-31 21:25:26 · 52 阅读 · 0 评论 -
省份数量:广度优先
有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市c间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市给你一个nxn 的矩阵 isConnected ,其中isConnected[i]li] =1表示第i个城市和第j个城市直接相连,而 isConnected[i]li] = 0表示二者不直接相连。返回矩阵中 省份 的数量.扩展:朋友圈问题,亲戚问题等。原创 2023-08-30 21:03:45 · 40 阅读 · 0 评论 -
省份数量:深度优先
有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市c间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市给你一个nxn 的矩阵 isConnected ,其中isConnected[i]li] =1表示第i个城市和第j个城市直接相连,而 isConnected[i]li] = 0表示二者不直接相连。返回矩阵中 省份 的数量.扩展:朋友圈问题,亲戚问题等。原创 2023-08-30 21:01:06 · 44 阅读 · 0 评论 -
二叉树层序遍历(迭代)
输出:1234567。原创 2023-08-29 21:45:10 · 34 阅读 · 0 评论 -
二叉树后序遍历(迭代)
输出:4675231。原创 2023-08-29 21:43:40 · 37 阅读 · 0 评论 -
二叉树中序遍历(迭代)
输出:4265713。原创 2023-08-29 21:41:58 · 33 阅读 · 0 评论 -
二叉树前序遍历(迭代)
输出:1245673。原创 2023-08-29 21:39:53 · 45 阅读 · 0 评论 -
二叉树遍历(前序,中序,后序)递归
【代码】二叉树遍历(前序,中序,后序)迭代。原创 2023-08-24 20:57:31 · 62 阅读 · 1 评论 -
贪心算法,获取数组中最长递增子序列
【代码】贪心算法,获取数组中最长递增子序列。原创 2023-08-22 22:06:40 · 73 阅读 · 1 评论 -
广度优先获取二叉树最小深度
queue.poll():返回第一个元素,并删除;queue.element():返回第一个元素;queue.peek():返回第一个元素.queue.offer():添加元素;这其中用到了Queue队列。原创 2023-08-22 22:05:36 · 60 阅读 · 1 评论 -
合并两个有序数组
/ System.out.println("合并后的数组为:" + Arrays.toString(merge1(num1, 5, num2, 4)));// System.out.println("合并后的数组为:" + Arrays.toString(merge(num1, 5, num2, 4)));System.out.println("合并后的数组为:" + Arrays.toString(merge2(num1, 5, num2, 4)));//合并两个有序数组。原创 2023-08-21 22:01:09 · 49 阅读 · 1 评论 -
链表中是否存在循环元素
set.add如果添加的元素不存在,返回true,如存在,返回false。原创 2023-08-21 21:58:22 · 32 阅读 · 1 评论 -
二叉树最小深度-深度优先
【代码】二叉树最小深度-深度优先。原创 2023-08-21 21:55:45 · 55 阅读 · 1 评论 -
插入排序 Java
插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。原创 2023-08-07 21:48:31 · 39 阅读 · 0 评论 -
选择排序 Java
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。原创 2023-08-07 21:46:09 · 33 阅读 · 0 评论 -
冒泡排序 Java
冒泡排序原创 2023-08-07 21:39:54 · 38 阅读 · 0 评论