![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
暴躁的程序猿啊
不是大佬,只是在分享学习的过程
展开
-
剑指 Offer 18. 删除链表的节点
剑指 Offer 18. 删除链表的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dia原创 2021-12-02 16:50:37 · 92 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。[2, 3, 1, 0, 2, 5, 3]遇到此类问题 我们可以想到利用集合的特性 排除掉重复的数据Set 无需不可重复的集合class Solution { public int findRepeatNumber(int[] nums) { Set<In原创 2021-11-20 19:56:20 · 225 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。遇到这种逆序返回的值 我们 首先可以想到使用栈来完成要了解 栈的特性 先入后出 相当于一个弹夹 最先放进来的被压到了最后那么我们就很好实现这道题了class Solution { public int[] reversePrint(ListNode head) { //这种倒序输出的题 我们可以用栈的特性 栈是先入后出 Stack<Integer> stack = new原创 2021-11-18 18:35:40 · 337 阅读 · 0 评论 -
排序算法之快速排序
快速排序是对冒泡算法的一种改进基本思想:通过一趟排序将要排序的数据分成独立的两个部分,其中一部分的所有数据都要比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据都变成有序序列。/** * 快速排序 * * @create: 2021/9/27 * @author: Tony Stark */public class QuickSort { public static void main(String[] args) {原创 2021-11-04 19:26:07 · 80 阅读 · 0 评论 -
合并两个有序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。这种链表 是需要我们遍历链表的输入:1->2->4, 1->3->4输出:1->1->2->3->4->4是否需要头结点 :因为我们 目前的 头结点是不能确定的当l1.val<l=2.val 时 头结点指向l1当l1.val>l2.val 时 头结点指向l2因此我们需要一个头结点指向 头结点的next 指向l1或l2我们还需要判断边界条件原创 2021-10-30 18:29:42 · 86 阅读 · 0 评论 -
动态规划解决背包问题
v[i][j]就是 上一个单元格装入的最大值v[i]:表示当前商品价值v[i-1][j-w[i]]装入i-1个商品 到剩余空间 j-w[i]的最大值当j>=w[i]时v[i][j]=max{v{i-1}[j],v[i]+v[i-1][j-w[i]]}原创 2021-10-28 20:00:57 · 353 阅读 · 0 评论 -
数据结构与算法之插值查找
插值查找算法1.插值查找算法类似于二分查找,不同的就是插值查找每次从自适应mid处开始查找,例如我们要从{1,8,10,89,1000,1024}找1这个数,那我们就会从前边开始找,插值查找就是应用这种原理;2.将折半查找中的求mid索引的公式,low表示左边索引,high表示右边索引int midIndex=low+(high-low)*(key-arr[low])/(arr[high]-arr[low]);代码实现/** * 插值查找算法 * * @create: 2021/10/4原创 2021-10-09 17:50:28 · 142 阅读 · 0 评论 -
数据结构与算法之二分查找
使用前提:二分查找需要在有序数组中进行查找思路分析:首先确定该数组的中间下标1.mid=(left+right)/22.然后让需要查找的数findval和arr[mid]比较需求请对一个有序数组进行二分查找{1,8,10,89,1000,1024},输入一个数字看看该数组中是否存在此数,并且求出下标,如果没有就返回“-1” 2.1findval>arr[mid]说明你要查找的数字在mid的右边,因此需要递归的向右进行查找 2.2findval<arr[mid]说明你原创 2021-10-05 12:54:21 · 155 阅读 · 0 评论