![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
wangbeita
这个作者很懒,什么都没留下…
展开
-
LeeCode-24-两两交换链表中的节点
题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:head = [1,2,3,4] 输出:[2,1,4,3] 解题思路: 我们可以通过改变链表的指向来解决这道题。 我们以1->2->3->4为例。 定义一个新链表res.next指向原链表。 因为两两交换涉及到三个节点,我们需要定义一个中间指针指向res方便返回修改后的链表,以及指向head节点、指向第二个节点的nxt、第三个节原创 2021-04-06 21:39:54 · 102 阅读 · 0 评论 -
LeeCode-22-括号生成
题目: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()"] 解题思路: 该题我们可以用回溯法来做。 我们可以先用排列组合,列出所有可能的结果。例如加入n=2,则会有以下结果 由上图我们可以得出结论:如果n=2,则left代表左括号的数量;right则代表右括号的数量。 当left&l原创 2021-04-05 20:45:15 · 75 阅读 · 0 评论 -
LeeCode-21-合并两个有序链表
题目: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 解题思路: 我们可以使用迭代法来解决此问题。 定义一个返回结果的链表res和辅助指针cur,让cur=res。 然后依次比较l1和l2的val值,如果l1.val<=l2.val 则让cur.next= l1;否则cur.next= l2. 然后依次移动l1或者l2的指针以及cur的指针。原创 2021-04-04 21:33:19 · 65 阅读 · 0 评论 -
LeeCode-20-有效的括号
题目: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例 1: 输入:s = “()” 输出:true 示例 2: 输入:s = “()[]{}” 输出:true 示例 3: 输入:s = “(]” 输出:false 解题思路: 这道题我们可以利用栈的数据结构来解。需要考虑一下几点: 需要考虑如果字符串为空,符合条件,直接返回 因为栈是先进后出,我们可以可以考虑把原创 2021-04-03 20:50:04 · 65 阅读 · 0 评论 -
LeetCode-02-两数相加
题目: 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 2: 输入:l1 = [0], l2 = [0] 输出:[0] 示例 3: 输入:l1 = [9,9,9,9,9,9,9],l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1] 解题思路: 这道题是两个链表的每个节点相加,如果超过10有进位的原创 2021-04-02 22:08:07 · 56 阅读 · 0 评论 -
LeetCode-01-两数之和
题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 解题思路: 第一种方法: (1)可以使用暴力解法。我们可以利用循环遍历,让第一原创 2021-04-02 11:46:47 · 49 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
题目: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 解题思路: 第一种方法: (1)我们可以先提前定义个辅助指针指向当前链表,从头开始遍历链表,记录链表的长度count。 (2)然后用for循环重原创 2020-11-20 20:44:38 · 59 阅读 · 0 评论