草庐IT

LeetCode刷题之树

全部标签

LeetCode 136.只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:算法应该具有线性时间复杂度。不使用额外空间来实现示例1:输入:[2,2,1]输出:1示例2:输入:[4,1,2,1,2]输出:4Python最佳解法使用了异或位运算符,在线性的时间复杂度下同时保证了不占用额外的空间。相同的数字异或一定是0,因此重复数字异或后都是0了,0再和一个不为0的数字异或就是它本身了。我们举个例子:有两个数均为7,则两个数的二进制均为0111,两者异或,0111^0111=0000,结果为0,若有三个数7,5,7,则三者异或为0111^0101^0111=0101,

LeetCode - #151 颠倒字符串中的单词

前言我们社区陆续会将顾毅(Netflix增长黑客,《iOS面试之道》作者,ACE职业健身教练。)的Swift算法题题解整理为文字版以方便大家学习与阅读。LeetCode算法到目前我们已经更新到150期,我们会保持更新时间和进度(周一、周三、周五早上9:00发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。不积跬步,无以至千里;不积小流,无以成江海,Swift社区伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。难度水平:中等1.描述给你一个字符串s,颠倒字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔

【LeetCode-简单】剑指 Offer 29. 顺时针打印矩阵(详解)

题目输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例1:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:输入:matrix= [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]剑指Offer29.顺时针打印矩阵-力扣(LeetCode)与力扣54题相同54. 螺旋矩阵思路二维数组顺时针从外往里走可以想象成:按照右-》下-》左-》上的顺序一直走,走过的地方不要走即可。1.每走过一个地方,就标记一下,这样下次就不会再走这里了2.

【C刷题】day1

一、选择题1.正确的输出结果是intx=5,y=7;voidswap(){intz;z=x;x=y;y=z;}intmain(){intx=3,y=8;swap();printf("%d,%d\n",x,y);return0;}【答案】:3,8【解析】:考点:(1)局部变量只在定义变量得到区域使用,在main函数中定义的局部变量,只能在main函数中使用(2)当局部变量和全局变量同名的时候,局部变量优先swap()函数交换的是全局变量的x和y,也就是全局变量的x=5,y=7交换为x=7,y=5可以在swap函数中打印x和y,得到的结果是x=7,y=5在输出语句这里,考虑局部变量优先2.以下不正

leetcode2434. 使用机器人打印字典序最小的字符串 出栈顺序 贪心+栈

https://leetcode.cn/problems/using-a-robot-to-print-the-lexicographically-smallest-string/        给你一个字符串s和一个机器人,机器人当前有一个空字符串t。执行以下操作之一,直到s和t都变成空字符串。请你返回纸上能写出的字典序最小的字符串:操作一:删除字符串s的第一个字符,并将该字符给机器人。机器人把这个字符添加到t的尾部。操作二:删除字符串t的最后一个字符,并将该字符给机器人。机器人将该字符写到纸上。示例1:输入:s="zza"输出:"azz"解释:用p表示写出来的字符串。一开始,p="",s=

【LeetCode】一起探究三数之和的奥秘

Problem:15.三数之和文章目录题目解析算法原理分析排序+暴力枚举+set去重排序+单调性+双指针划分思想复杂度Code题目解析首先我们来分析一下本题的思路题目说到要我们在一个整数数组中去寻找三元组,而且呢这三个数字所相加的和为0,而且呢这三个数的位置还要不一样我们以这个示例1为例来看看,我列出了3种可能性,分别是[-1,0,1]、[-1,2,-1]、[0,1,-1],不过呢我们仔细看这个题意中的概念,又可以知道这些三元组还不可以重复,那么第一个和第三个我们就需要考虑到去重💬但是要如何去求解本题呢,怎么去找出这些三元组呢?找出之后又该如何去做一个去重的操作呢?我们马上进行算法原理分析算法

单链表OJ题:LeetCode--142.环形链表Ⅱ(判断第一次入环的节点)

朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第142道单链表OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏:数据结构与算法个 人 主 页 :stackY、C语言专栏:C语言:从入门到精通LeetCode--142.环形链表Ⅱ: https://leetcode.cn/problems/linked-list-cycle-ii/description/目录1.题目介绍2.实例演示3.解题思路4.思路验证 5.其他解题方法1.题目介绍给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 nul

刷题小记

今天在刷牛客网华为机试的题目。有个素数伴侣的算法,就是在给定一组数字中,例如2,3,5,6,11,13,找出能够配对最多的素数对数(素数:不能被除了1和本身之外的数整除)。比如2+3就是一个素数,这俩就是一对素数伴侣,剩下四个数以此类推找出最大配对数。题目很好懂,如果给一个例子自己算也很好算,但就是自己的计算也没有规律可言,都是肉眼找。思来想去找不到计算规律,查看题解才知道,原来有一个匈牙利算法,可以解决此类问题。这个算法的核心可以用八个字概括:先到先得,能让则让。简单来说我们的数字列表可以分为奇数和偶数两对,只有奇数+偶数的组合才可能是素数。也就是说我们其实是在给奇数项和偶数项画连接线。先到

LeetCode - #146 LRU 缓存(Top 100)

前言本题为LeetCode前100高频题我们社区陆续会将顾毅(Netflix增长黑客,《iOS面试之道》作者,ACE职业健身教练。)的Swift算法题题解整理为文字版以方便大家学习与阅读。LeetCode算法到目前我们已经更新到145期,我们会保持更新时间和进度(周一、周三、周五早上9:00发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。不积跬步,无以至千里;不积小流,无以成江海,Swift社区伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。难度水平:中等1.描述请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCa

动态规划 0(斐波那切数列 leetcode 509)

思想动态规划的核心思想是分治,将复杂问题转换成子问题,通过子问题的迭代逐渐逼近真实问题。这个过程拆解为:(1)根据问题寻找状态(2)定义dp数组(3)明确如何选择,即状态转移方程(4)明确basecase和初始值实例斐波那切数列leetcode509一个数列由0和1开始,后面每一项数字都是前面两项数字的和。状态这是一个简单示例,问题中没有任何干扰信息,只有数字的值,状态也就是数字的值。dp数组状态是数字的值,dp数组存储状态即可。这里要注意的是dp数组下标和数字的项的关系。一种方式是二者同步,下标是从0开始的,数字的项定义为输入的n值,n>=0。[0,1]是dp数组的前两项,代表的含义是输入值