数据结构与算法
一个东北来的程序猿
这个作者很懒,什么都没留下…
展开
-
Leetcode剑指 Offer 24. 反转链表
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof解题思路反转链表:遍历原链表 每次新链表 = 新元素 + 上次的新链表代码实现public List原创 2021-09-13 15:02:06 · 252 阅读 · 0 评论 -
Leetcode1894. 找到需要补充粉笔的学生编号
题目:一个班级里有 n 个学生,编号为 0 到 n - 1 。每个学生会依次回答问题,编号为 0 的学生先回答,然后是编号为 1 的学生,以此类推,直到编号为 n - 1 的学生,然后老师会重复这个过程,重新从编号为 0 的学生开始回答问题。给你一个长度为 n 且下标从 0 开始的整数数组 chalk 和一个整数 k 。一开始粉笔盒里总共有 k 支粉笔。当编号为 i 的学生回答问题时,他会消耗 chalk[i] 支粉笔。如果剩余粉笔数量 严格小于 chalk[i] ,那么学生 i 需要 补充 粉笔。原创 2021-09-10 13:52:08 · 183 阅读 · 0 评论 -
Leetcode新手做题1221. 分割平衡字符串
题目在一个 平衡字符串 中,‘L’ 和 ‘R’ 字符的数量是相同的。给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。注意:分割得到的每个字符串都必须是平衡字符串。返回可以通过分割得到的平衡字符串的 最大数量 。示例 1:输入:s = “RLRRLLRLRL”输出:4解释:s 可以分割为 “RL”、“RRLL”、“RL”、“RL” ,每个子字符串中都包含相同数量的 ‘L’ 和 ‘R’ 。示例 2:输入:s = “RLLLLRRRLR”输出:3解释:s 可以分割为 “RL”原创 2021-09-07 10:05:01 · 142 阅读 · 0 评论 -
LeetCode---剑指 Offer 22. 链表中倒数第k个节点
题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题+ 从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-bi原创 2021-09-02 11:31:56 · 131 阅读 · 0 评论 -
新手LetCode541 --- 反转字符串二
题目给定一个字符串 s 和一个整数 k,从字符串开头算起,每 2k 个字符反转前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-string-ii思路反转字符串 老生常谈 用栈 或者双指针 一个向左一个向右这道题用人话讲 就是每隔k个反转k个问题在于第一次反转后的处理原创 2021-08-20 10:37:34 · 189 阅读 · 0 评论 -
LeetCode今日题目------------反转字符串中的元音字母
题目给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。用人话说:反转字符串中符合要求的字符们思路如果是单纯的反转字符串 第一个想到的是可以用栈解决,这道题应该也可以脑袋又转了转 可以标记每次发现的元音字符以及出现的位置,然后再反着放回去进阶一下 每次把正反两次的字符都记住 然后交换位置好吧 我得承认 我百度了一下什么是原因字母 (ps:此处笑脸)乱七八糟的代码 (肯定是原创 2021-08-19 17:40:16 · 200 阅读 · 0 评论 -
数据结构与算法学习3------单向链表的实现
单项链表,本次写的是含有头指针的单向链表,有add()、delete()、和遍历方法实现,基本思路都是采用指针法进行元素一一对应 来操作。package com.chunying;/** * @author chunying * @Date: 2020/7/1 0001 */// 单向链表带头指针 的实现 整体采用指针法进行增加、删除以及遍历public class LinkedList { private final HeroNode head = new HeroNode(n原创 2020-07-01 22:25:07 · 166 阅读 · 0 评论 -
数据结构与算法学习2-----数组实现队列
首先说一下队列的特性,和栈正好相反是先进先出,也就是说谁先进来先出去的就是谁这次要实现的是一个简单的队列,有add和 delete 以及打印数据的方法其中add()方法采用尾插法,其中会考虑到空间重复利用的问题package array;//用数组模拟实现队列 和栈相反 栈是头插法、尾删除 队列是尾插法、头删除public class Queue { private int[] value = new int[20]; int head = -1; //头指针 一原创 2020-06-30 02:23:25 · 137 阅读 · 2 评论 -
数据结构与算法学习1-----稀疏数组
最近失眠很严重,所以想借空闲时间重温也是学习一下数据结构,通过某大神的视频这里主要呈现一些代码的实现和一些我个人的理解,如有出入,还请见谅这篇是稀疏数组与二维数组的相互转换为什么要用稀疏数组呢,我们说二维数组 是能展现一个图形上是四边形的数据,因为有行和列,如果是一个11*11的二维数组,就是121个点,也就是存121份数据。我们可以把创建数组后没有操作的数据叫做默认数据如果这121份数据几乎都是默认数据,用二维数组存放至文件或者磁盘 是不是很浪费空间呢,此时就可以用稀疏数组来实现如下图(鄙人不善原创 2020-06-30 02:15:36 · 167 阅读 · 0 评论