![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode 刷题笔记
文章平均质量分 89
来自于 leetocode 上面的习题,总结一些自己练过题目的做题方法
paynmind
小白一个,只能一步一个脚印。
展开
-
算法题解 —— 链表(15-19)
内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。15. 单链表的选择排序:题目描述:给定一个无序单链表的头节点 head,实现单链表的选择排序。要求:额外空间复杂度为 O(1)解题思路:开始时默认整个链表都是未排序的部分,对于找到的第一个最小值节点,肯定是整个链表的最小值节点,将其设置为新的头节点,记为 newHead每次在未排序的部分中找到最小值的节点,然后把这个节点从未排序的链表中删除,删除的过程当然要保证未排序部分的链表在结构上不至于断开把删除的节点原创 2021-01-30 14:10:58 · 195 阅读 · 1 评论 -
算法题解 —— 链表(11-14)
内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。11. 将单链表的每 K 个节点之间逆序:题目描述:给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每 K 个节点之间逆序,如果不够 K 个节点一组,则不调整最后几个节点。解题思路:方法一:利用栈结构从左到右遍历链表,如果栈的大小不等于 K,就将节点不断压入栈中当栈的大小第一次达到 K 时,说明第一次凑齐了 K 个节点进行逆序,从栈中依次弹出这些节点,并根据弹出的顺序重新连接,这一组逆序后,原创 2021-01-30 14:09:11 · 185 阅读 · 1 评论 -
算法题解 —— 链表(6-10)
内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。6. 环形单链表的约瑟夫问题:题目描述:输入:一个环形单向链表的头节点 head 和报数的值 m返回:最后生存下来的节点,且这个节点自己组成环形单向链表,其他节点都删掉进阶问题:如果链表节点数为 N,想在时间复杂度为 O(N) 时完成原问题的要求解题思路:普通解法:如果链表为空或者链表节点为1,或者 m 的值小于1,则不用调整就直接返回当环形链表中遍历每个节点,不断转圈,不断让每个节点报数当报数到达原创 2021-01-27 22:12:22 · 381 阅读 · 1 评论 -
算法题解 —— 链表(1-5)
内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。第二章 链表问题1. 打印两个有序链表的公共部分:题目描述:给定两个有序链表的头指针 head1 和 head2,打印两个链表的公共部分。解题思路:因为是有序链表,所以从两个链表的头部开始进行如下判断:如果 head1 的值小于 head2,则 head1 往下移动如果 head2 的值小于 head1,则 head2 往下移动如果 head1 的值与 head2 的值相等,则打印这个值,然后 head1原创 2021-01-21 22:33:53 · 125 阅读 · 0 评论 -
算法题解 —— 栈(1-5)
内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。第一章 栈和队列1. 设计一个有 getMin 功能的栈:题目描述:实现一个特殊的栈,在实现栈的基础上,再实现返回栈中最小元素的操作。解题思路:在设计时,我们使用两个栈,一个栈用来保存当前栈中的元素,其功能和一个正常的栈没有区别,这个栈记为 stackData;另一个栈记为 stackMin。具体的实现方式有两种:(一般情况下)数据压栈时,先对 stackMin 进行判断,如果小于等于栈顶元素,压入 stack原创 2020-12-19 14:22:36 · 305 阅读 · 2 评论 -
算法题解 —— 栈(6-9)
内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。6. 生成窗口最大值数组:题目描述:有一个整型数组 arr 和一个大小为 w 的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。例如,数组为 [4,3,5,4,3,3,6,7],窗口大小为3时:[4 3 5] 4 3 3 6 7 窗口中最大值为54 [3 5 4] 3 3 6 7 窗口中最大值为54 3 [5 4 3] 3 6 7 窗口中最大值为54 3 5 [4 3 3] 6 7 窗口中最大值为44 3原创 2020-12-25 20:49:35 · 188 阅读 · 0 评论 -
剑指 offer 篇:11 - 15
内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。11.剑指 Offer 13. 机器人的运动范围题目描述:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=原创 2020-12-19 16:30:43 · 80 阅读 · 1 评论 -
剑指 offer 篇:6 - 10
内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。6.剑指 Offer 09. 用两个栈实现队列题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]原创 2020-12-12 14:43:30 · 96 阅读 · 0 评论 -
剑指 offer 篇:1 - 5
内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现。1.剑指 Offer 03. 数组中重复的数字题目描述:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3解题思路:Set 集合存储,循环查找有无重复。原地置换,其实与前一原创 2020-12-12 14:41:23 · 94 阅读 · 0 评论