
每日算法学习
leekari
这个作者很懒,什么都没留下…
展开
-
每日一题-相对名次
leetcode-每日一题-相对名次给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况:名次第 1 的运动员获金牌 “Gold Medal” 。名次第 2 的运动员获银牌 “Silver Medal” 。名次第 3 的运动员获铜牌 “Bronze Medal” 。从名次第 4.原创 2021-12-02 10:10:23 · 230 阅读 · 2 评论 -
连续字符-每日一题
leetcode每日一题—连续字符给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。示例 1:输入:s = "leetcode"输出:2解释:子字符串 "ee" 长度为 2 ,只包含字符 'e' 。示例 2:输入:s = "abbcccddddeeeeedcba"输出:5解释:子字符串 "eeeee" 长度为 5 ,只包含字符 'e' 。示例 3:输入:s = "triplepillooooow"输出:5示例 4.原创 2021-12-01 09:52:41 · 153 阅读 · 0 评论 -
Leetcode每日一题-最小K个数(Smallest K LCCI)
设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/smallest-k-lcci著作权归领扣网络所有。商业转载请联系官方授权,.原创 2021-09-03 09:24:47 · 137 阅读 · 0 评论 -
Leetcode每日一题-链表中倒数第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-biao.原创 2021-09-02 09:19:04 · 115 阅读 · 0 评论 -
Leetcode每日一题- 比较版本号(Compare Version Numbers)
给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号 0.原创 2021-09-01 16:54:44 · 306 阅读 · 0 评论 -
Leetcode每日一题- 反转字符串 II(Reverse String II)
给定一个字符串 s 和一个整数 k,从字符串开头算起,每 2k 个字符反转前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例 1:输入:s = "abcdefg", k = 2输出:"bacdfeg"示例 2:输入:s = "abcd", k = 2输出:"bacd"提示:1 <= s.length <= 104s 仅由小写英文组成1 <= k &l.原创 2021-08-20 16:05:46 · 270 阅读 · 0 评论 -
Leetcode每日一题-反转字符串中的元音字母(Reverse Vowels of a String)
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入:"hello"输出:"holle"示例 2:输入:"leetcode"输出:"leotcede"提示:元音字母不包含字母 “y”特别提醒:包括大写元音字母来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solu.原创 2021-08-19 09:49:14 · 116 阅读 · 0 评论 -
Leetcode每日一题-学生出勤记录 II(Student Attendance Record II)
可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:‘A’:Absent,缺勤‘L’:Late,迟到‘P’:Present,到场如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:按 总出勤 计,学生缺勤(‘A’)严格 少于两天。学生 不会 存在 连续 3 天或 连续 3 天以上的迟到(‘L’)记录。给你一个整数 n ,表示出勤记录的长度(次数)。请你返回记录长度为 n 时,可能获得出勤奖励的记录情况 数量 。答.原创 2021-08-18 11:18:19 · 132 阅读 · 0 评论 -
Leetcode每日一题-学生出勤记录 I(Student Attendance Record I)
给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:‘A’:Absent,缺勤‘L’:Late,迟到‘P’:Present,到场如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:按 总出勤 计,学生缺勤(‘A’)严格 少于两天。学生 不会 存在 连续 3 天或 3 天以上的迟到(‘L’)记录。如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。示例 1:输入:s = "PPAL.原创 2021-08-17 10:14:30 · 142 阅读 · 0 评论 -
Leetcode每日一题-优美的排列(Beautiful Arrangement)
假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第 i 位的数字能被 i 整除i 能被第 i 位上的数字整除现在给定一个整数 N,请问可以构造多少个优美的排列?示例1:输入: 2输出: 2解释:第 1 个优美的排列是 [1, 2]: 第 1 个位置(i=1)上的数字是1,1能被 i(i=1)整除 第 2 个位置.原创 2021-08-16 17:23:46 · 162 阅读 · 0 评论 -
删除排序链表中的重复元素 II
删除排序链表中的重复元素 II难度:中等存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现 的数字。返回同样按升序排列的结果链表。示例 1:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]示例 2:输入:head = [1,1,1,2,3]输出:[2,3]提示:链表中节点数目在范围[0, 300]内-100 <= Node.val <= 100题目数据保证原创 2021-03-25 11:03:29 · 91 阅读 · 0 评论 -
矩阵置零
矩阵置零难度:中等给定一个m x n的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0]]进阶:原创 2021-03-21 00:58:44 · 111 阅读 · 0 评论 -
逆波兰表达式求值
逆波兰表达式求值难度:中等根据逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入:tokens = ["4","13","原创 2021-03-20 20:04:41 · 154 阅读 · 0 评论 -
设计停车系统
设计停车系统难度:简单请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。请你实现ParkingSystem类:ParkingSystem(int big, int medium, int small)初始化ParkingSystem类,三个参数分别对应每种停车位的数目。bool addCar(int carType)检查是否有carType对应的停车位。carType有三种类型:大,中,小,分别用数字 1,2和3表示。一辆车只原创 2021-03-19 10:03:09 · 153 阅读 · 0 评论 -
螺旋矩阵II
螺旋矩阵II难度:中等给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]提示:1 <= n <= 20来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/spiral-matrix-ii著作权归领扣网络所有原创 2021-03-16 16:18:04 · 160 阅读 · 0 评论 -
螺旋矩阵
螺旋矩阵难度:中等给你一个m行n 列的矩阵 matrix,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 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]提示:m == matrix.lengthn == matrix[i].len原创 2021-03-15 14:06:42 · 151 阅读 · 0 评论 -
设计哈希映射
设计哈希映射难度:简单不使用任何内建的哈希表库设计一个哈希映射(HashMap)。实现MyHashMap类:MyHashMap()用空映射初始化对象void put(int key, int value)向HashMap插入一个键值对 (key, value) 。如果key已经存在于映射中,则更新其对应的值value。int get(int key)返回特定的key所映射的value;如果映射中不包含key的映射,返回-1。void remove(key)如果映射中存在key的映射,则移除原创 2021-03-14 16:43:27 · 144 阅读 · 0 评论 -
查询数组中的主要元素
主要元素数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2:输入:[3,2]输出:-1示例 3:输入:[2,2,1,1,1,2,2]输出:2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-majority-element-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处原创 2020-09-23 15:21:36 · 346 阅读 · 0 评论 -
算法【数组模块】----寻找两个有序数组的中位数
Median of Two Sorted ArraysGiven two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.Follow up: The overall run time complexity should be O(log (m+n)).Example 1:Input: nums1 = [1,3], nums2 = [2]原创 2020-09-23 14:12:58 · 94 阅读 · 0 评论 -
左孩子右兄弟表示法的任意有根树的遍历
算法导论 p.248 10.4-4题目描述:对于一个含n个结点的任意有根树,写出一个O(n)时间的过程,输出其所有关键字,该树以左孩子右兄弟表示法存储。与二叉树的遍历类似树结构的定义:class Tree: def __init__(self, val): self.val = val self.left_child = None self.right_bro = None使用栈实现了树的遍历class Solution:原创 2020-08-18 07:32:29 · 1443 阅读 · 0 评论 -
每日一题---二叉树节点遍历的问题
二叉树节点遍历问题算法导论p138 10.4-2题目要求:给定一个n节点的二叉树,写出一个O(n)时间的递归过程,将概述每个节点的关键字输出。利用python3来实现。''' 18 /\ 12 10 /\ /\ 7 4 2 21 / 5'''##TreeNode定义class TreeNode: def __init__(self, x): self.val = x sel原创 2020-08-17 23:28:37 · 260 阅读 · 0 评论 -
每日一题---从上到下打印二叉树
从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]提示:节点总数 <= 1000今日未能解答。以下为参考题解所写的Java代码。/** * Definition for a binary tree node. * public class TreeNode原创 2020-08-15 22:08:52 · 185 阅读 · 0 评论 -
每日一题---最小高度树
最小高度树给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 tips: 二叉搜索树。二叉查找树(Binary Search Tree),(又:二叉搜索树,.原创 2020-08-14 23:12:49 · 277 阅读 · 0 评论 -
每日一题---数字转换为十六进制数
数字转换为十六进制数给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。示例1输入:26输出:"1a"示例2输入:-1输出:"fff原创 2020-08-13 21:55:12 · 963 阅读 · 0 评论 -
每日一题---较大分组的位置
较大分组的位置在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 S = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。我们称所有包含大于或等于三个连续字符的分组为较大分组。找到每一个较大分组的起始和终止位置。最终结果按照字典顺序输出。示例 1:输入: "abbxxxxzzy"输出: [[3,6]]解释: "xxxx" 是一个起始于 3 且终止于 6 的较大分组。示例 2:输原创 2020-08-12 21:41:50 · 153 阅读 · 0 评论