算法训练
算法每日刷题,持续更新。纯属自己理解,如有错误,请指正,谢谢!
原来是涛涛啊
为之奋斗!
展开
-
5.买卖股票的最佳时机
5.买卖股票的最佳时机题目描述: 给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意,不能在买入股票前卖出股票。示例:输入:[7,1,5,3,6,4]输出:5解释:在第2天(股票价格 = 1) 的时候买入,在第5天(股票价格 = 6)的时候卖出,最大利润 = 6-1=5。注意:利润不能是 7-1=6,因为卖出价格需要大于买入价格;同时,不能在买入前卖出股票。解法一:暴力求解。首先原创 2021-01-26 20:12:57 · 117 阅读 · 0 评论 -
4.搜索插入位置
4.搜索插入位置题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。可以假设数组中无重复数。示例:输入:[1,3,5,6],5输出:2解法一:遍历数组,比较是否在数组中存在目标值,如果存在,返回当前下标,否则比较目标值与当前值的大小,判断插入的位置。 public static int returnLocation(int[] nums, int target) { int len =原创 2021-01-26 19:44:52 · 209 阅读 · 0 评论 -
3.移除元素
3.移除元素题目描述: 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。示例:给定 nums = [0,1,2,2,3,0,4,2],val = 2函数应该返回新的长度 5,并且 nums 中的前五个元素为 0,1,3,0,4注意这五个元素可为任意顺序,不需要考虑数组中超出新长度后面的元素解法一:暴力法。将数据从前往后扫描,如果出现该位置的元素值与给定的值相等,就将下一位置的元素覆盖该位置元素,向前移一位。 public原创 2021-01-26 19:35:30 · 112 阅读 · 0 评论 -
2.删除排序数组中的重复项
2.删除排序数组中的重复项**题目描述:**给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。示例:给定数组 nums = [0,0,1,1,1,2,2,3,3,4]函数应该返回新的长度 5,并且原数组 nums 的前5个元素被修改为 0,1,2,3,4不需要考虑数组中超出新长度后面的元素解法一:暴力法。将数据从前往后扫,如果下一个元素的值与当前元素值相等,将下一个元素之后的所有元素整体向前挪一位,否则取下一个元素为当前元素。 //原创 2021-01-26 19:23:14 · 196 阅读 · 0 评论 -
1.两数之和
1.两数之和题目描述:给定一个整数数组 nums 和一个整数目标值 target ,请你在该数组中找出 和为目标值 的那 两个整数,并返回他们的数组下标。可以假设每种输入只会对应一个答案,但是数组中同一个元素不能使用两遍。可以按任意顺序返回答案。解法一:暴力解决。使用枚举法,两次循环遍历数组。时间复杂度为O(n^2),空间复杂度为O(1)public static int[] getResult(int[] nums , int target) { int len = nums.原创 2021-01-19 19:28:16 · 83 阅读 · 0 评论