算法题解
分享算法题目的解题方法和体会
iversongzy
一个在山脚下准备爬山的人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LinkedList- K 个一组翻转链表
问题:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]解题思路:如果K<2时链表没有变化,设置四个指针,pre,next为需要转换节点的边界,head,tail是需要转换节点的起始位置,分组进行字符串反转。class Solution {原创 2021-03-10 22:58:17 · 154 阅读 · 0 评论 -
LinkedList-环形链表
问题1给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个原创 2021-03-10 22:56:03 · 380 阅读 · 0 评论 -
LinkedList-两两交换链表中的节点
问题:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。输入:head = [1,2,3,4]输出:[2,1,4,3]解题思路:这道题用文字叙述比较吃力,有图的演示就很清晰,此篇文章讲解的很好,大家可以参照下https://leetcode-cn.com/problems/swap-nodes-in-pairs/solution/dong-hua-yan-shi-24-liang-liang-ji...原创 2021-03-10 22:53:29 · 516 阅读 · 0 评论 -
LinkedList-反转链表
问题:反转一个单链表。输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路:此题可以使用递归思想求解。首先还是写出递归终止条件。然后假设只差最后一步没有反转,如例子:1->2<-3<-4<-5,我们需要做的就只剩下将2指向1就可以了。class Solution { public ListNode reverseList(ListNode原创 2021-03-10 22:50:44 · 904 阅读 · 0 评论 -
Array-三数之和
题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]解题思路:首先要给数组进行从小到大排序,然后从左往右依次遍历。固定左边值,因为题目要求是要找到和为0的数组,如果和为0,其中的元素要么有负数,要么都是0,如果都是整数不可原创 2021-03-09 00:53:39 · 140 阅读 · 0 评论 -
Array-爬楼梯
问题:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶解题思路:此题使用递归的思路最好求解。这个题其实可以在纸上写出前几种情况的解法,找到他们的相同之处,找到最小重复子问题。假设我们已经知道n-1和n-2有多少种走法,也知道每次你可以爬 1 或 2 个台阶,所以n阶台阶的走法就是原创 2021-03-09 00:52:07 · 141 阅读 · 0 评论 -
Array-移动零
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]解题思路任何一道题在解题时首先要考虑它的边界条件。定义变量index记录不为0元素的位置,同时使用for循环遍历,将不为0的值放在前面去,重点在11行,把0换到后面去。27行的做法更为巧妙,当i > j 时,只需要把 i 的值赋值给j 并把原位置的值置0。同时这里也把交换操作换成了赋值操作。class Sol原创 2021-03-09 00:50:29 · 195 阅读 · 0 评论 -
Array-盛最多水的容器
盛最多水的容器题目:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。解题思路1、首先要想.原创 2021-03-09 00:47:28 · 122 阅读 · 0 评论
分享