草庐IT

leedcode刷题(4)

全部标签

卷进大厂系列之LeetCode刷题笔记:颠倒字符串里的单词(中等)

学算法,刷力扣,加油卷,进大厂!题目描述力扣题目链接给你一个字符串s,颠倒字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。示例1:输入:s="theskyisblue"输出:"blueisskythe"示例2:输入:s="helloworld"输出:"worldhello"解释:颠倒后的字符串中不能存在前导空格和尾随空格。示例3:输入:s="agoode

【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(9)

目录写在前面:题目:P1025[NOIP2001提高组]数的划分-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述:输入格式:输出格式:输入样例:输出样例:解题思路:代码:AC!!!!!!!!!!写在最后:写在前面:怎么样才能学好一个算法?我个人认为,系统性的刷题尤为重要,所以,为了学好深度优先搜索,为了用好暴搜应对蓝桥杯,事不宜迟,我们即刻开始刷题!题目:P1025[NOIP2001提高组]数的划分-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述:输入格式:n,k (6输出格式:1 个整数,即不同的分法。输入样例:73输出样例:4提示:四种分法为:1,1,5;1

【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(9)

目录写在前面:题目:P1025[NOIP2001提高组]数的划分-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述:输入格式:输出格式:输入样例:输出样例:解题思路:代码:AC!!!!!!!!!!写在最后:写在前面:怎么样才能学好一个算法?我个人认为,系统性的刷题尤为重要,所以,为了学好深度优先搜索,为了用好暴搜应对蓝桥杯,事不宜迟,我们即刻开始刷题!题目:P1025[NOIP2001提高组]数的划分-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述:输入格式:n,k (6输出格式:1 个整数,即不同的分法。输入样例:73输出样例:4提示:四种分法为:1,1,5;1

算法刷题营【Day2】:: 双指针算法应用:滑动窗口 :209. 长度最小的子数组

本内容是笔者结合《代码随想录》总结所得,记录学习过程,分享知识!目录:1.开篇例题:209.长度最小的子数组2.题解参考--2.1方法一:暴力法--2.2方法二:滑动窗口3.方法思路点拨:滑动窗口--3.1直白解释--3.2本题思路点拨4.相关题集1.开篇例题:209.长度最小的子数组例题:点击直飞2.题解参考2.1方法一:暴力法classSolution{public:intminSubArrayLen(inttarget,vector&nums){//双循环暴力法intsum=0;intres=INT32_MAX;intlen=0;for(inti=0;i=target){len=j-i+

Leecode刷题心得和bug(哈希表与二叉树)

Leecode刷题心得和bug(哈希表和二叉树)一、哈希表0哈希表基础知识三种常见的哈希表当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。数组set(集合)map(映射)这里数组就没啥可说的了,我们来看一下set。在C++中,set和map分别提供以下三种数据结构,其底层实现以及优劣如下表所示:集合底层实现是否有序数值是否可以重复能否更改数值查询效率增删效率std::set红黑树有序否否O(logn)O(logn)std::multiset红黑树有序是否O(logn)O(logn)std::unordered_set哈希表无序否否O(1)O(1)std::unordered

第8天-代码随想录刷题训练-字符串● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer 05.替换空格 ● 151.翻转字符串里的单词 ● 剑指Offer58-II.左旋转字符串

文章目录1.反转字符串(要求O(1)的额外空间)2.反转字符串23.替换空格4.反转字符串中的单词5.剑指Offer58-II.左旋转字符串1.反转字符串(要求O(1)的额外空间)LeetCode链接编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。swap常见的两种交换形式常见的值交换通过位运算classSolution{public:voidreverseString(vectorchar>&s){intl=0,h=s.size()-1;chartemp;while(l

第13天-代码随想录刷题训练-第六章 二叉树和迭代 ● 递归遍历 ● 迭代遍历 ● 统一迭代

文章目录递归三要素1.递归遍历二叉树2.迭代遍历二叉树3.统一迭代法递归三要素确定递归函数的参数和返回值:确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数,并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件:写完了递归算法,运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定单层递归的逻辑:确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。LeetCode链接144.二叉树的前序遍历145.二叉树的后序遍历

第12天-代码随想录刷题训练-第五章 栈和队列3 - ● 239. 滑动窗口最大值 ● 347.前 K 个高频元素

文章目录今天主要是队列的应用1.滑动窗口最大值(困难-单调队列)2.前K个高频元素(大顶堆和小顶堆)今天主要是队列的应用1.滑动窗口最大值(困难-单调队列)LeetCode原题给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值思路暴力方法,每次遍历窗口内的数据,遍历(n-k+1)次,时间复杂度为k*n滑动窗口的过程很像是一个队列,每次遍历一个元素都要pop一个元素,push一个元素,最后再getMax因此这是一个优先级队列,C++中相当于实现一个大顶堆,头部元素是最大值,底层

Leetcode刷题之反转链表Ⅱ

业精于勤而荒于嬉,行成于思而毁于随。           ——韩愈目录前言:🍁一.反转链表Ⅱ🍒1.left和right中间链表反转,再把反转链表和剩下的链接起来🗼2.left和right中间链表头插 题目描述:给你单链表的头指针head和两个整数 left和right,其中 left示例1:输入:head=[1,2,3,4,5],left=2,right=4输出:[1,4,3,2,5]示例2:输入:head=[5],left=1,right=1输出:[5]提示:链表中节点数目为 n1-5001做题链接: 反转链表Ⅱ前言:之前我们写了反转链表,它是把全部的链表反转过来,难度是简单。而这个题是把l

力扣刷题|L24. 两两交换链表中的节点 、L19.删除链表的倒数第N个节点 、L面试题 02.07. 链表相交 、L142.环形链表II

今天的刷题最大的收获,便是学会了在群里跟大家进行讨论,这样得到的答案,往往能更快的提高效率,希望自己能继续坚持下去。L24.两两交换链表中的节点https://leetcode.cn/problems/swap-nodes-in-pairs/submissions/本题主要考虑双指针法,也就是如何判断虚拟节点不动的情况,这是一个难点,可以利用另一个节点来等于虚拟节点,然后再利用两个局部变量,来完成还原,这样虚拟节点还是没有变,但是其指向的值会发生变化,以后返回某个值,只需要将虚拟节点固定,利用一个值来取代该值,对该值进行变化即可classSolution{public: ListNode*sw