草庐IT

LeetCode题2两数相加

全部标签

代码随想录算法训练营第六天|242、有效的字母异位词|349、两个数组的交集|202、快乐数|1、两数之和

(day5休息调整->day6)day6  主要内容:哈希表哈希表是根据关键码的值而直接进行访问的数据结构。有数组、set(集合)、map(映射)三种数据结构哈希表用来快速判断一个元素是否出现在集合里。242、有效的字母异位词·数组哈希表用数组++--就完事题目链接:https://leetcode.cn/problems/valid-anagram/思路:数组哈希表存放26个字母的出现次数   数组下标为[字符串-‘a']   第一串字符对应的数组值++   第二串字符对应的数组值--   若有数组值不为0则不是字母异位词代码实现:数组哈希表     时间复杂度O(n)     空间复杂度O

代码随想录算法训练营第六天|242、有效的字母异位词|349、两个数组的交集|202、快乐数|1、两数之和

(day5休息调整->day6)day6  主要内容:哈希表哈希表是根据关键码的值而直接进行访问的数据结构。有数组、set(集合)、map(映射)三种数据结构哈希表用来快速判断一个元素是否出现在集合里。242、有效的字母异位词·数组哈希表用数组++--就完事题目链接:https://leetcode.cn/problems/valid-anagram/思路:数组哈希表存放26个字母的出现次数   数组下标为[字符串-‘a']   第一串字符对应的数组值++   第二串字符对应的数组值--   若有数组值不为0则不是字母异位词代码实现:数组哈希表     时间复杂度O(n)     空间复杂度O

YACS 两数之积 题解

link 分别考虑原数组$a[]$中所有的正数,负数以及0的数量:设$a[]$中正数的数量为$cnt1$个,把$a[]$中所有正数保存在$bz[]$数组中,负数数量为$cnt2$个,保存在$bf[]$数组中,0的数量为$cnt0$个。----------------------------------设$x1$,$x0$,$x2$分别为两两相乘之后新生成的$b$序列中所有正数,0,负数的个数,则:$$x1=cnt1*(cnt1-1)/2+cnt2*(cnt2-1)/2$$$$x0=cnt0*(n-1)$$$$x2=cnt1*cnt2$$-----------------------------

YACS 两数之积 题解

link 分别考虑原数组$a[]$中所有的正数,负数以及0的数量:设$a[]$中正数的数量为$cnt1$个,把$a[]$中所有正数保存在$bz[]$数组中,负数数量为$cnt2$个,保存在$bf[]$数组中,0的数量为$cnt0$个。----------------------------------设$x1$,$x0$,$x2$分别为两两相乘之后新生成的$b$序列中所有正数,0,负数的个数,则:$$x1=cnt1*(cnt1-1)/2+cnt2*(cnt2-1)/2$$$$x0=cnt0*(n-1)$$$$x2=cnt1*cnt2$$-----------------------------

leetcode 20. Valid Parentheses 有效的括号(中等)

一、题目大意标签:栈和队列https://leetcode.cn/problems/valid-parentheses给定一个只包括'(',')','{','}','[',']' 的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例1:输入:s="()"输出:true示例 2:输入:s="()[]{}"输出:true示例 3:输入:s="(]"输出:false示例 4:输入:s="([)]"输出:false示例 5:输入:s="{[]}"输出:true提示:1s仅由括号'()[]{}'组成二、解题思路思路:括号匹配是典型的使用栈来

leetcode 155. Min Stack最小栈(中等)

一、题目大意标签:栈和队列https://leetcode.cn/problems/min-stack设计一个支持push,pop,top操作,并能在常数时间内检索到最小元素的栈。实现MinStack类:MinStack()//初始化堆栈对象。voidpush(intval)//将元素val推入堆栈。voidpop()//删除堆栈顶部的元素。inttop()//获取堆栈顶部的元素。intgetMin()//获取堆栈中的最小元素。示例1:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[

leetcode 232. Implement Queue using Stacks 用栈实现队列(简单)

一、题目大意标签:栈和队列https://leetcode.cn/problems/implement-queue-using-stacks请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素booleanempty()如果队列为空,返回true;否则,返回false说明:你只能使用标准的栈操作——也就是只有 pushtotop, peek/popfromtop, size,和 isem

LeetCode最长快乐字符串使用JavaScript解算法

有人相爱,有人夜里开车看海,我是leetcode第一题都做不出来题目如果字符串中不含有任何'aaa','bbb'或'ccc'这样的字符串作为子串,那么该字符串就是一个「快乐字符串」。给你三个整数a,b,c,请你返回任意一个满足下列全部条件的字符串s:s是一个尽可能长的快乐字符串。s中最多有a个字母'a'、b 个字母'b'、c个字母'c'。s中只含有'a'、'b'、'c'三种字母。如果不存在这样的字符串s,请返回一个空字符串""。输入:a=1,b=1,c=7输出:"ccaccbcc"解释:"ccbccacc"也是一种正确答案。快乐字符串中不含有三个连续相同的字母。为了找到最长的字符串,我们可以使

leetcode 769. Max Chunks To Make Sorted 最多能完成排序的块(中等)

一、题目大意标签:数组https://leetcode.cn/problems/max-chunks-to-make-sorted给定一个长度为n的整数数组arr,它表示在[0,n-1]范围内的整数的排列。我们将arr分割成若干块(即分区),并对每个块单独排序。将它们连接起来后,使得连接的结果和按升序排序后的原数组相同。返回数组能分成的最多块数量。示例1:输入:arr=[4,3,2,1,0]输出:1解释:将数组分成2块或者更多块,都无法得到所需的结果。例如,分成[4,3],[2,1,0]的结果是[3,4,0,1,2],这不是有序的数组。示例2:输入:arr=[1,0,2,3,4]输出:4解释:

leetcode 240. Search a 2D Matrix II 搜索二维矩阵 II(中等)

一、题目大意标签:数组https://leetcode.cn/problems/search-a-2d-matrix-ii编写一个高效的算法来搜索 m x n 矩阵matrix中的一个目标值target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例1:输入:matrix=[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]],target=5输出:true示例2:输入:matrix=[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,