![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大脑保健操
文章平均质量分 67
记录每日学习算法的文章
程序员徐小白
程序员徐小白,专注于Java后端研发领域。
同名微信公众号,我会第一时间在上面分享我的学习笔记,还有各种学习资料。
展开
-
【每日算法】力扣121. 买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5原创 2022-03-07 09:00:00 · 135 阅读 · 0 评论 -
【每日算法】力扣566. 重塑矩阵
在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。如果具有给定参数的 resha原创 2022-03-04 09:00:00 · 246 阅读 · 0 评论 -
【每日算法】力扣118. 杨辉三角
给定一个非负整数 numRows, 生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows = 1输出: [[1]]提示:1 <= numRows <= 30通过次数234,762提交次数319,444做题我们把 示例1 中的数据遍历出原创 2022-03-03 09:00:00 · 309 阅读 · 0 评论 -
【每日算法】力扣350. 两个数组的交集 II
描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。做题这个说明的第一条我没太看懂。从题目“两个数组的交集”上推测,应该是不需要考虑两个数组的顺序。我一开始还以为原创 2022-02-27 09:00:00 · 124 阅读 · 0 评论 -
【每日算法】88. 合并两个有序数组
描述给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:输入:nums1 =原创 2022-02-22 09:00:00 · 1050 阅读 · 0 评论 -
【每日算法】力扣1. 两数之和
描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:原创 2022-02-23 09:15:00 · 120 阅读 · 0 评论 -
【每日算法】力扣53. 最大子序和
描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-10000原创 2022-02-24 09:00:00 · 296 阅读 · 0 评论 -
【每日算法】力扣217. 存在重复元素
前言前面刷了牛客上入门级别的五道算法题,个人感觉比较吃力,所以我打算去刷一下数据结构相关的算法,做一个数据结构的专项训练,我本来想在牛客上刷的,但是怎么都找不到数据结构的专项训练,我记得之前有的,所以现在只能在力扣上刷了。确定。让我们来做第一题。描述给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4原创 2022-02-25 09:00:00 · 640 阅读 · 0 评论 -
【每日算法】NC38 螺旋矩阵
描述给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。数据范围:0≤ n,m ≤10,矩阵中任意元素都满足 ∣val∣≤100要求:空间复杂度 O(nm),时间复杂度 O(nm)示例1输入:[[1,2,3],[4,5,6],[7,8,9]]返回值:[1,2,3,6,9,8,7,4,5]示例2输入:[]返回值:[]做题又是一道只能遍历解决的题,个人感觉做这种提不需要太多的数学知识,对新手来说还是比较友好的。这道原创 2022-01-24 09:15:00 · 680 阅读 · 0 评论 -
【每日算法】NC65 斐波那契数列
描述大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。斐波那契数列是这样一个数列:1、1、2、3、5、8、13、21、34…就是第一和第二位都是 1,后面的数都是前面两个数之和。数据范围:1 ≤ n ≤ 39要求:空间复杂度 O(1),时间复杂度 O(n) ,本题也有时间复杂度 O(logn)的解法输入描述:一个正整数n返回值描述:输出一个正整数。做题做这种题,肯定不用递归啦,递归????都不用。肯定需要两原创 2022-01-21 09:15:00 · 981 阅读 · 0 评论 -
【每日算法】 NC151 最大公约数
描述如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数, b 为 a 的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。输入 a 和 b , 请返回 a 和 b 的最大公约数。数据范围:1≤ a,b ≤10^9进阶:空间复杂度 O(1),时间复杂度 O(logn)。暴力 for 循环最简单的一种做法了,直接循环i++去找出两个数能够同时整除的数,然后一直循环到 i 等于最小的那个数。/*** 暴力 for 循环原创 2022-01-20 09:15:00 · 433 阅读 · 0 评论 -
【每日算法】牛客-NC103 反转字符串
描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)数据范围: 0 < n < 1000要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)考察过的公司:腾讯、百度、微盟做题虽然这道题目非常简单,但是也有不少大公司考察了,所以不要好高骛远,脚踏实地地做好每一道题非常的重要。反转字符串,目前的String类几乎没有功能能够“一键”完成这个功能,所以就必须得自己写算法了,不能抄捷径了。反转字符串,字符串其实也可以转成一个数组的,那原创 2022-01-19 09:15:00 · 320 阅读 · 0 评论