数据结构与算法
Tuski-
希望都是惊喜
展开
-
LeetCode 169 多数元素(哈希表/排序/摩尔投票) Java
文章目录题目示例思路一(HashMap)代码实现思路二(排序法)代码实现思路三(摩尔投票法)代码实现题目169.多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。这是力扣今天的每日一题,看到的第一反应就是用HashMap,做出来后看题解才发现HashMap有点low了…...原创 2020-03-13 02:13:49 · 268 阅读 · 0 评论 -
LeetCode 3 无重复字符的最长子串 C语言
文章目录题目示例 :思路一(双层循环)代码实现思路二(单层循环)代码实现题目3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 :示例1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以...原创 2020-03-08 22:59:12 · 513 阅读 · 0 评论 -
LeetCode 202 快乐数 C语言
题目202.快乐数编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + ...原创 2020-03-08 22:09:42 · 536 阅读 · 0 评论 -
有向图的创建及深搜广搜
文章目录输入输出有向图的创建深搜深搜的定义代码实现广搜广搜的定义广搜的原理代码实现输入第一行输入两个整数,以空格隔开,分别代表图的顶点数n和弧数e。(顶点个数<=20)第二行依次输入顶点值,类型为字符,中间不用间隔符。接下去有e行,每行为两个字符 uv(中间没有间隔符),表示一条弧<u,v>。5 7ABCDEABAEBCCDDADBEC输出第一行,输...原创 2019-12-05 22:25:18 · 669 阅读 · 0 评论 -
LeetCode 24.两两交换链表中的节点 C语言
题目24.两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.思路此处以四个节点为例首先更换前两个节点,将第一个节点指向第三个节点,第二个节点指向第一个节点,如图但是到第二个两两交换就...原创 2019-11-30 00:37:06 · 489 阅读 · 0 评论 -
二叉树的三种遍历及求高度和非叶子节点(递归实现)
文章目录二叉树的三种遍历简介例如代码实现二叉树求高度思想代码实现二叉树求其非叶子节点思想代码实现二叉树的三种遍历简介先序遍历:先访问根节点——左子树——右子树中序遍历:先访问左子树——根节点——右子树后序遍历:先访问左子树——右子树——根节点例如先序遍历结果:ABDECF中序遍历结果:DBEAFC后序遍历结果:DEBFCA代码实现先序遍历:void preOr...原创 2019-11-12 17:51:54 · 630 阅读 · 0 评论 -
LeetCode 155 最小栈 C语言
题目设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);m...原创 2019-11-03 02:19:00 · 146 阅读 · 0 评论 -
LeetCode 121 买卖股票的最佳时机 和 LeetCode 122 买卖股票的最佳时机2 C语言
文章目录121 买卖股票的最佳时机题目解析代码121 买卖股票的最佳时机题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 ...原创 2019-10-21 19:40:03 · 200 阅读 · 0 评论 -
C语言--简易表达式求值(栈的初步应用)
文章目录前言思路核心代码前言表达式求值是栈应用的一个典型的应用实例。在计算机中,任何一个表达式都是由运算符和操作数构成的。今天我讨论的是运算符仅含有 + - * / ()的情况。思路我们首先建立两个栈,一个用于存放运算符,一个用于存放操作数然后获取一个表达式,对表达式从左向右扫描,因为要符合算术运算先乘除后加减的运算规则,故并不是遇见一个运算符就可以进行运算,要与上一次遇见的运算符进...原创 2019-10-01 01:38:00 · 6130 阅读 · 4 评论 -
LeetCode 1186 删除一次得到子数组最大和
删除一次得到子数组最大和题目给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),(删除后)子数组中至少应当有一个元素,然后该子数组(剩下)的元素总和是所有子数组之中最大的。注意,删除一个元素后,子数组 不能为空。示例 1:输入:arr = ...原创 2019-09-21 23:44:05 · 177 阅读 · 0 评论 -
LeetCode 876 链表的中间节点
链表的中间节点题目给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3,...原创 2019-09-21 21:47:30 · 152 阅读 · 0 评论 -
LeetCode 19 删除链表的倒数第N个节点
删除链表的倒数第N个节点题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。思路定义两个快慢指针,一个标记指针,需要删除倒数第N个节点,就让快指针先跑N个节点,然后...原创 2019-09-21 21:40:34 · 80 阅读 · 0 评论 -
LeetCode 21 合并两个有序链表
合并两个有序链表题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路因为两个链表是有序的,创建两个标记指针,一个指向l1链表,一个指向l2链表,比较两个的值,若l1指向的值小,p3就等于p1,指针后移,...原创 2019-09-21 21:01:14 · 66 阅读 · 0 评论 -
LeetCode 141 环形链表
环形链表题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输...原创 2019-09-21 20:10:00 · 203 阅读 · 0 评论 -
LeetCode206 反转链表
反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路:使用三个指针,分别标记上一次反转后的表头,这一次需要反转的节点和下一次需要反转的节点过程中相当于将一个链表拆成了两个以示例来说就是第一次反转后成为 1 和 2345第二次反转后成为 21 和 ...原创 2019-09-20 20:53:08 · 95 阅读 · 0 评论