Leetcode:从排序数组中删除重复项与买卖股票的最佳时机 II (Go语言版本)

【开始刷题啦——Leetcode《初级算法》(Go语言)】 leetcode 阅读详情

从排序数组中删除重复项

要求:

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

示例:

给定数组 nums = [1,1,2],

函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。

你不需要考虑数组中超出新长度后面的元素。

结题思路:

数组是有序的,首先使用一个基数来比对元素,计算不重复元素的个数 ,然后对原来重复的元素重新赋值
* 返回移除后数组的新长度,不需要考虑数组中超出新长度后面的元素
注意,不能复制数组,也就是说不能创建一个临时数组来操作它,必须在原有数组上进行修改

Golang代码:

func removeDuplicates(nums []int) int {
    length := len(nums)
    if length < 2{
        return length
    }
    var i,result int
    result = 0
    for i=0;i<length;i++{
        if nums[result] != nums[i]{
            // 统计不重复元素的个数
            result++
            // 对原来重复的元素重新赋值为不重复的元素值
            nums[result] = nums[i]
        }
    }
    // 不重复数组的新长度
    result = result+1
    return result
}

买卖股票的最佳时机

要求

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:

输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 =5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。

示例 2:

输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 =5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。注意你不能在第 1 天和第 2天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。

示例 3:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

解题思路

从给出的题干和示例中可以看出,都是计算最大获得利润。所以不用考虑买入卖出操作,我们只负责计算最大利润,我们可以使用昨天的价格来作为最小价格和今天的价格比较,如果获利那就把利润记录下来。

Golang代码

func maxProfit(prices []int) int {
    length := len(prices)
    if length == 0{
        return 0
    }

    var i, sumProfit int
    // 昨天的价格
    minPrice := prices[0]
    for i=1;i<length;i++{
        if minPrice < prices[i]{
            sumProfit = sumProfit + (prices[i] - minPrice)
        }
        minPrice = prices[i]
    }

    return sumProfit
}
LeetCode初级算法练习——数组篇 数组篇26. 从排序数组中删除重复项给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。示例:给定数组: nums = [1,1,2], 你的函数应该返回新长度 2, 并且原数组nums的前两个元素必须是1和2 不需要理会新的数组长度后面的元素Given a sorted ar... 阅读详情

相关推荐

GNSS接收机性能测试全攻略:从实验室到真实场景

本文系统介绍了GNSS接收机从实验室到真实场景的完整性能测试流程。首先通过GNSS模拟器进行射频传导测试,评估接收机的基础性能;其次进行天线OTA测试,考察整机系统表现;最后通过精心设计的外场路测,在复杂环境中验证其实际定位精度与可靠性。文章强调,只有结合可控的实验室验证与多变的外场挑战,才能对接收机性能做出全面、真实的评价。

weixin_28365523的博客 519

入门级算法练手--数组--从排序数组中删除重复项、买卖股票的最佳时机 II (每日两题2019-09-20)

1、从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新...

J_SUNV的博客 349

开关变换器小信号建模实战:从理论到环路设计

本文深入探讨了开关变换器小信号建模的实战技巧,从理论基础到环路设计全面解析。通过Buck和Boost变换器的具体案例,详细介绍了状态空间平均法、扰动法等关键建模技术,并分享环路补偿设计和实际调试中的宝贵经验。文章特别强调了小信号建模在电源设计中的重要性,为工程师提供了从理论到实践的完整解决方案。

weixin_29290259的博客 376

LeeCode初级——数组篇1(删除重复项、买卖股票的最佳时机、旋转数组)

/*从排序数组中删除重复项 * 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元...

Yanir的博客 271

FreeRTOS任务调度实战:如何让STM32同时处理温湿度采集、OLED显示和云端通信

本文通过一个基于STM32的物联网终端项目,详细讲解了如何利用FreeRTOS实现多任务调度,同时处理温湿度采集、OLED显示和云端通信。文章深入探讨了任务规划、堆栈分配、信号量与消息队列等核心机制,并重点优化了ESP8266通信任务的非阻塞设计与稳定性,为构建响应迅速、运行可靠的嵌入式系统提供了实战指南。

weixin_29188043的博客 331

ETL数据集成案例

一个典型的ETL数据集成案例是将多个来源的数据合并成一个数据集。假设有一个公司,该公司使用一些不同的系统来存储不同部门的数据,例如销售数据存储在一个CRM系统中,财务数据存储在一个ERP系统中,人力资源数据存储在一个HR系统中。为了更好地进行报告和分析,该公司决定将所有这些数据集成到一个数据仓库中。以下是实现这一目标的ETL过程的步骤:提取(Extract):首先,需要从每个系统中提取所需的数据。每个系统可能有不同的数据格式和结构,因此需要编写不同的提取程序或查询来提取数据。

runqu的博客 948

买卖股票的最佳时机I,删除排序数组重复项,有效括号判断问题

买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1:输入: [7,1,5,3,6,4]输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。...

CoolSuperman的博客 238

泛微OA与金蝶云星空深度集成实战:审批与表单双场景解析

本文深入解析泛微OA与金蝶云星空的深度集成实战,聚焦审批流程与表单对接两大核心场景。通过具体案例,详细阐述了如何实现业务数据与审批流程的自动联动,打破数据孤岛,提升企业运营效率与数据一致性,并分享了接口设计、安全策略及实战避坑指南。

4k5l6j7h8的博客 466

【LeetCode编程】字符串和数组篇

在LeetCode刷题的字符串和数组篇章,探索算法和数据结构的精华。通过挑战不同难度的问题,程序员能够培养对字符串和数组处理的深刻理解。这一篇章的问题范围广泛,包括搜索、排序、滑动窗口、动态规划等。通过解决这些问题,学习者将提高对字符串和数组问题的解决能力,并培养编码技巧。其中,字符串问题着眼于处理文本数据,如反转字符串、有效的字母异位词、最长回文子串等。数组问题则聚焦于线性数据结构,例如两数之和、移动零、螺旋矩阵等。这一篇章的习题不仅挑战了编程技巧,也促使学习者思考优化算法的方法,提高代码效率。

朝花夕拾 1万+

Win11 C盘瘦身终极指南:哪些能删/能移/不能碰?附详细目录清单

本文提供了一份详细的Win11 C盘瘦身终极指南,清晰区分了可安全删除、适合迁移以及绝对不能触碰的系统目录。文章不仅列出了具体的文件夹清单与操作建议,还介绍了使用符号链接和Robocopy进行安全迁移的高阶方法,并附带了自动化脚本,帮助用户从根本上解决C盘空间不足的问题,同时确保系统稳定。

weixin_29246195的博客 1546

十九、帧间预测编码_5、skip模式和direct模式

帧间预测的几种特殊模式: P_Skip: 即COPY模式,在该模式下无运动矢量残差,无像素预测残差。重建时以MVP作为实际运动矢量,以预测像素块作为重建; B_Skip:同P_Skip类似的是该模式下同样无运动矢量残差,无像素预测残差。重建时,以Direct模式获取双向MV,以预测像素块作为重建; B_Direct:B_Direct模式分为B_Direct_8x8和B_Direct_16x16,分别表示整个宏块和一个子块按照B_Direct模式编码。该模式下,无运动矢量残差,有像素预测残差。重建时,以D.

叮咚的博客 2390

力扣初级算法-01-数组-删除排序重复项、买卖问题

力扣初级算法-01 学习目标 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 删除排序数组中的重复项 买卖股票的最佳时机 II 学习详解 学习笔记 学习总结

nvluco的博客 208

串口通信的性能瓶颈分析:如何提高数据吞吐量和降低延迟

摘要: 串口通信在高频或大数据场景下存在吞吐量不足、延迟高、丢帧等问题,主要瓶颈包括波特率限制、缓冲区不足、CPU轮询延迟等。优化策略包括:提升波特率至硬件上限、增大缓冲区、采用异步I/O(如ReadAsync)减少线程切换,使用二进制协议降低解析开销。实时性方面需启用硬件流控、批量发送数据,并优化线程优先级。跨平台适配需区分Windows/Linux的缓冲区设置与异步机制。性能测试可通过吞吐量、延迟及回环测试验证优化效果,核心原则是硬件匹配、异步处理、协议优化与跨平台适配。(150字)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 984

力扣LeetCode初级算法每日一题

从今天开始坚持每天在LeetCode坚持刷书记算法题有兴趣的小伙伴可以和我一起坚持刷题 Java版本 链接:初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/leetbook/detail/top-interview-questions-easy/买卖股票的最佳时机 II链接:初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/leetbook/detai

weixin_63426509的博客 897

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LeetCode(力扣)初级算法 数组篇

LeetCode(力扣)初级算法 数组篇、删除排序数组中的重复项、买卖股票的最佳时机 II、旋转数组、存在重复元素、只出现一次的数字、两个数组的交集 II、加一、移动零、两数之和、有效的数独、旋转图像、旋转矩阵、双指针法

weixin_50803498的博客 1422

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【LeetCode】初级算法:一、数组

文章目录1.1 删除排序数组中的重复项1.2 买卖股票的最佳时机 II1.3 旋转数组1.4 存在重复元素1.5 只出现一次的数字1.6 两个数组的交集 II1.7 加一1.8 移动零 简介: 这是由 LeetCode 官方推出的经典面试题目清单,将题目分为以下三个部分: 初级算法 - 帮助入门 中级算法 - 巩固训练 高级算法 - 提升进阶 这一系列 LeetBook 将帮助掌握算法及数据结构,并提高编程能力。 力扣: 数组问题在面试中出现频率很高,你极有可能在面试中遇到。 我们推荐以下题目:只出

尊新必威的博客 1188

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

[算法]力扣刷题-初级算法 - 数组(一) [删除有序数组中的重复项] [买卖股票的最佳时机 II] [轮转数组] [存在重复元素]

26. 删除有序数组中的重复项 122. 买卖股票的最佳时机 II 189. 轮转数组 217. 存在重复元素

_ 491

力扣:数组入门系列

LC删除排序数组中的重复项 写给自己看学习,从最简单开始,我可以看懂的, 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 给定 nums = [0,0,1,1,1,2,2,3,3,4], 函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。 def removeDuplicates(self, nums:

qq_44621848的博客 367

力扣初级算法(Python)

2数组 2.1 删除排序数组中的重复项 class Solution: def removeDuplicates(self, nums: List[int]) -> int: length = 0; for i in nums: if i != nums[length]: length+=1 nums[length] = i return l...

一只大鸽子的博客 6166

【贪玩巴斯】力扣 (LeetCode)刷题——算法入门 每日一练 【删除重复项、买卖股票的最好时机 II、旋转数组、存在重复元素、只出现一次的数字、两个数组的交集】2021-10-24

算法入门题目一:题目:删除排序数组中的重复项C++源程序:个人心得:题目讲解:涉及知识: ——转载自力扣 (LeetCode) 作者:力扣 (LeetCode) 链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2gy9m/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 题目一: 题目:删除排序数组中的重复项 给你一个有序数组 nums ,请你 原地 删除重复出

D16100的博客 796

力扣-初级算法

这里写自定义目录标题122. 买卖股票的最佳时机 II 122. 买卖股票的最佳时机 II class Solution { public int maxProfit(int[] prices) { int maxprofit = 0; for (int i = 1; i < prices.length; i++) { if (prices[i] > prices[i - 1]) maxprofit

qq_42788016的博客 1003

力扣网-探索初级算法-数组篇

本篇博客题目来自力扣网,分组为初级算法下的数组。适合作为数组方面的练习。上面刷题测试用例真的丰富,总是有很多考虑不到的地方。第一遍做完了,很多解法都不是最优解。主要是分享下。 探索初级算法—力扣网链接 数组 题目的话打开上面的链接就可以看到,这里就不复述了。 从排序数组中删除重复项 public int removeDuplicates(int[] nums) { int...

小jinx的博客 1231

leetcode题解-初级算法数组篇(1-5题)

7月保研的夏令营已经告一段落了,面试中被问了很多算法的问题,感觉自己算法知识有些许薄弱(acm大神忽略),所以准备开始刷leetcode,顺便也为面试准备,因为想把刷leet里面的一些心得给记下来,便于之后复习,所以在这里开博。之后会按里面的篇章顺序进行更新,喜欢的可以给文章点一个赞,如果文章有任何问题或者有更好的解法可以在评论中给出,下面开始题解,本篇章为初级算法的数组篇(1-5题): 第一题...

纸鱼的笔记 1930

LeetCode数组算法题(Java版)

文章目录一、删除有序数组中的重复项(26题)1.1双指针解法二、买股票的最佳时机(122题)1.动态规划2.贪心算法 一、删除有序数组中的重复项(26题) 原题如下: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 1: 输入:nums = [1,1,2] 输出:2, nums = [1,2] 解释:函数应该返回新的长度 2 ,并且原

Vae的黑粉 1886

LeetCode初级之数组

数组 1.从排序数组中删除重复项 2.买卖股票的最佳时机 II 3.旋转数组 4.存在重复 5.只出现一次的数字 6.两个数组的交集 II 7.加一 8.移动零 9.两数之和 10.有效的数独 11.旋转图像 数组 题目中涉及到的解法是我目前找到的解法,这些解法可能并不是最优的,但我会随着自己能力的提升一直更新它 1.从排序数组中删除重复项 给定一个排序数组,你...

壮飞的博客 574

bat从数组中找出相同数字并删除_LeetCode in python简单题--数组篇

1.两数之和167.两数之和 II - 输入有序数组26. 删除排序数组中的重复项27. 移除元素66. 加一88. 合并两个有序数组118. 杨辉三角119. 杨辉三角II121. 买卖股票的最佳时机122. 买卖股票的最佳时机 II169. 求众数189.旋转数组1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组...

weixin_39766014的博客 219
上一篇: Mac上通过docker配置PHP开发环境
下一篇: PHP面试总结 v2018.08.24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值