LeetCode每日一题
uniGame
程序媛, 学啥分享啥。记录一下吧~
展开
-
力扣 - 盛最多水的容器 c#
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:height =原创 2021-04-06 20:44:28 · 170 阅读 · 0 评论 -
投掷骰子得到每个骰子的点数
需求 :已知n个骰子,要投掷出来的点数综合为m,返回一个数组长度为n的数组,结果为每个骰子的点数。骰子的点数范围为1-6。m>=n && m<=n*6思路限制要求,每个骰子的点数必须是大于等于1,小于等于6对于最小的临界的处理方法是,在初始状态下,对应数组的初始数字就设置为1对于最大的临界,就是限制最大的点数6因为总数为m,那么我就遍历m-n次(初始的数字已经添加了1),每次我都随机取一个数组中的index,对数字加1,这个时候要进行...原创 2020-12-04 14:39:13 · 999 阅读 · 0 评论 -
力扣 - 字符串中的第一个唯一字符 c#
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例s = "leetcode"返回 0s = "loveleetcode"返回 2解题思路:1第一种最开始的思路是逐个字符去做循环遍历,但是这个方案并不是最优的,遍历的次数,是n*n+1次。所以如果遇到字符串很长的话,会有问题 “超出时间限制”public int FirstUniqChar(string s){ for (int n = 0; n < s.Length..原创 2020-11-04 11:46:08 · 211 阅读 · 0 评论 -
力扣 - 整数反转 c#
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。········································································原创 2020-11-03 20:52:55 · 373 阅读 · 0 评论 -
力扣 - 有效的数独
题目判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用'.'表示。解题思路:最开始的思路是,遍历三次,分别检测,行,列,以及九个格子的数字是否有重复,但是其实是可以简化成只遍历1次,分别把三种情况的数字存...原创 2020-10-27 10:16:23 · 182 阅读 · 0 评论 -
力扣 - 移动零 c#
移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解题思路利用双指针,从头开始遍历,找到不为0的数字,依次置换(上图补充 , 同时num[b]赋值为0)依次遍历,最终就可以得到结果了.逻辑可以梳理清楚了c#代码public void MoveZeroes(int[] nums){原创 2020-10-13 18:27:26 · 281 阅读 · 0 评论 -
力扣 - 加一 c#
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。原创 2020-10-13 16:57:08 · 297 阅读 · 0 评论 -
LeetCode 重复元素 c#
给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true解题思路:利用双指针的思想 ,一个指针从0开始遍历,另一个指针从length-1开始遍历,当两个序号不相等但是值相等的时候就说明,数字重复了直接返回就可以了public b原创 2020-09-18 20:15:58 · 91 阅读 · 0 评论 -
LeetCode 旋转数组 C#
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释:向右旋转 1 ...翻译 2020-09-13 11:02:30 · 180 阅读 · 0 评论 -
LeetCode 买卖股票问题c#
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6原创 2020-09-04 10:43:46 · 160 阅读 · 0 评论 -
删除有序数组里的重复元素
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。使用双指针法, 可以将时间负责度o(n^2)的解法优化为o(n)。这个算法只需要遍历一次就可以得到对应数组的长度图解 : (官方教程)int[] a = new[] {1, 1, 1, 2, 3, 4};public void OutPutArrayLength(int[] a){ int翻译 2020-09-03 10:31:02 · 440 阅读 · 0 评论