
算法
立十芃
这个作者很懒,什么都没留下…
展开
-
leetcode分隔链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。小于x的变量为小头smallHead,小尾smallTail, 大头确定之后,小尾依次向下移动即可,形成小于x的链表。大于等于x的变量为大头bigHead,大尾bigTail,组合模式参考小链表。输入:head = [1,4,3,2,5,2], x = 3。输入:head = [2,1], x = 2。输出:[1,2,2,4,3,5]原创 2024-08-19 11:36:22 · 250 阅读 · 0 评论 -
leetcode链表求和
输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295。输入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295。进阶:思考一下,假设这些数位是正向存放的,又该如何解决呢?给定两个用链表表示的整数,每个节点包含一个数位。编写函数对这两个整数求和,并用链表形式返回结果。这些数位是反向存放的,也就是个位排在链表首部。输出:2 -> 1 -> 9,即912。输出:9 -> 1 -> 2,即912。原创 2024-08-16 11:50:27 · 174 阅读 · 0 评论 -
合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。两个链表都是升序排列,只需要将两个链表依次比较 再拼接成一个链表即可。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]输入:l1 = [], l2 = []输出:[1,1,2,3,4,4]原创 2024-08-16 10:56:13 · 159 阅读 · 0 评论 -
leetcode反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输入:head = [1,2]输出:[5,4,3,2,1]输入:head = []原创 2024-08-15 10:22:31 · 178 阅读 · 0 评论 -
二分查找法解决寻找峰值
nums[0]不是峰值,nums[1]>nums[0],数组开始为上升趋势,nums[n-1]不是峰值,nums[n-2]>nums[n-1],数组结束为下降趋势;3、查找其中的峰值可用二分查找法,取中间值m,判断中间值是否为峰值,如果(m-1)>m,则舍弃(m+1)之后的数组,继续在1~m中查找,如(m+1)>m则舍弃0 ~ (m-1)之前的数组,在(m+1) ~ n-2中查找。1、先确定nums[0]和nums[n-1]是不是峰值,如果是峰值返回即可。输入:nums = [1,2,1,3,5,6,4]原创 2024-08-07 10:19:11 · 239 阅读 · 0 评论 -
选择排序,冒泡排序,插入排序
选择排序就是找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。通常人们整理牌的方法是一张一张的来,将每一张牌插人到其他已经有序的牌中的适当位置。在计算机的实现中,为了给要插人的元素腾出空间,我们需要将其余所有元素在插人之前都向右移动一位。这种算法叫做插入排序。冒泡排序就是将最大的值交换到最右边,先确定整个数组的终点,从左往右依次比值排序,将最大值排到最右侧。原创 2024-07-30 18:04:32 · 136 阅读 · 0 评论 -
一道算法小题
一开始有100个人,每个人都有100元在每一轮都做如下的事情,每个人都必须拿出1元钱给除自己以外的其他人,给谁完全随机如果某个人在这一轮的钱数为0,那么他可以不给,但是可以接收发生很多轮之后,这100人的社会财富分布很均匀吗?一道社会小题用Java实现一下。原创 2024-07-26 11:35:25 · 163 阅读 · 0 评论