-
LeetCode解析---121.买卖股票的最佳时机
2020-04-16 09:45:45LeetCode解析—121.买卖股票的最佳时机 题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 ...LeetCode解析—121.买卖股票的最佳时机
题目:
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。示例 1:
输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =
6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。 示例 2: 输入: [7,6,4,3,1] 输出: 0简单介绍:
题目:买卖股票的最佳时机。题目难度:简单。
使用语言:java。解题思路:
先定义最大值为0,这样他由大到小变会最大值是0。再用排序将数组中的数字相加做比较,输出最大值。在这里插入代码片 package leerCode; /** * * @author boom */ public class besttime { public int maxProfit(int[] prices){ int max=0; for(int i=0;i<prices.length;i++) { for(int j=i+1;j<prices.length;j++) { int temp=prices[i]-prices[j]; if(max<temp)max=temp; } } return max; } }
-
LeetCode解析——715.Range模块
2021-01-08 11:07:38题目: Range 模块是跟踪数字范围的模块。你的任务是以一种有效的方式设计和实现以下接口。 addRange(int left, int right) 添加半开区间 [left, right),跟踪该区间中的每个实数。添加与当前跟踪的数字部分重叠的... -
两数之和 leetCode 解析
2020-09-22 10:41:43学习目标: 一周刷6个 学习内容: 两数之和 哈希表 考虑到用暴力破解的话时间复杂度为O(n²),那么要降低时间复杂度就要损耗掉空间,这样才能降低时间复杂度,用一遍哈希时间复杂度诶O(n)。...学习目标:
一周刷6个
学习内容:
两数之和 哈希表
考虑到用暴力破解的话时间复杂度为O(n²),那么要降低时间复杂度就要损耗掉空间,这样才能降低时间复杂度,用一遍哈希时间复杂度诶O(n)。
用到hashMap对象的get()、put()、containsKey()方法。
执行用时2ms。
遍历数组的思路:定义一个值为temp = target-num[i],然后判断该值temp是否在哈希表中,如果在那就返回哈希表中的该temp的索引下标,
不在的话就把键值对存进哈希表中。public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map=new HashMap<Integer, Integer>();
for (int i = 0,len = nums.length;i<len;i++){
int temp = target - nums[i];
if(map.containsKey(temp)){
return new int [] {map.get(temp),i};
}
map.put(nums[i],i);
}
throw new
IllegalArgumentException("no two sum solution");
}学习时间:
下班后
我的第一篇博客
-
LeetCode解析---134. 加油站
2020-04-22 21:58:58题目: 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要...来源:力扣(LeetCode) 链接:https://leetcode-cn.com/pro...题目:
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。
你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i]
升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/gas-station
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例:
输入:
gas = [1,2,3,4,5]
cost = [3,4,5,1,2]
输出: 3解释:
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油 开往 4 号加油站,此时油箱有 4
- 1 + 5 = 8 升汽油 开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油 开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油 开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油 开往 3 号加油站,你需要消耗 5
升汽油,正好足够你返回到 3 号加油站。 因此,3 可为起始索引。
分析:
我们定义当前的油量curr_tank 和总油量total_tank ,总油量用来判断能不能走完一圈,当前油量为了确定以哪里为起点,首先,我们用一开始为起点,如果加的油可以支撑到下一个加油站,则循环,如果不行,我们就将当前的油量归零,以下一个加油站为起点,而前面的加油站n因为已经算过够支撑走到加油站n+1,所以不用管
class Solution { public int canCompleteCircuit(int[] gas, int[] cost) { int n = gas.length; int total_tank = 0; int curr_tank = 0; int starting_station = 0; for (int i = 0; i < n; ++i) { total_tank += gas[i] - cost[i]; curr_tank += gas[i] - cost[i]; // If one couldn't get here, if (curr_tank < 0) { // Pick up the next station as the starting one. starting_station = i + 1; // Start with an empty tank. curr_tank = 0; } } return total_tank >= 0 ? starting_station : -1; } }
- 1 + 5 = 8 升汽油 开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油 开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油 开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油 开往 3 号加油站,你需要消耗 5
-
LeetCode解析---135. 分发糖果
2020-04-24 12:34:11题目: 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师...来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cand...题目:
老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。
你需要按照以下要求,帮助老师给这些孩子分发糖果:
每个孩子至少分配到 1 个糖果。 相邻的孩子中,评分高的孩子必须获得更多的糖果。
那么这样下来,老师至少需要准备多少颗糖果呢?
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/candy
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例:
输入: [1,0,2]
输出: 5
解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。
输入: [1,2,2]
输出: 4
解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。
第三个孩子只得到 1 颗糖果,这已满足上述两个条件。分析:
首先,我们定义一个数组来存放每个小孩子的糖果,因为每个人必须有糖果,用Arrays.fill来初始化数组各个值为1,我们再去比较,这里有个细节,就是要左右都比较,要遍历2次,第一次遍历先从左向右 若右边的孩子评分比左边高 则右边的糖果数等于左边的糖果数加一,第二次遍历先从右向左 若左边的孩子评分比右边高且左边的孩子糖果数小于等于右边的 则左边的糖果数等于右 边的糖果数加一 同时求和
public class Solution { public int candy(int[] ratings) { int[] candies = new int[ratings.length]; Arrays.fill(candies, 1); for (int i = 1; i < ratings.length; i++) { if (ratings[i] > ratings[i - 1]) { candies[i] = candies[i - 1] + 1; } } int sum = candies[ratings.length - 1]; for (int i = ratings.length - 2; i >= 0; i--) { if (ratings[i] > ratings[i + 1]) { candies[i] = Math.max(candies[i], candies[i + 1] + 1); } sum += candies[i]; } return sum; } }
-
LeetCode解析---89. 格雷编码
2020-05-14 12:44:57来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/gray-code 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 示例 1: 输入: 2 输出: [0,1,3,2] 解释: 00 - 0 01 - 1 11 -
LeetCode解析---1094. 拼车
2020-05-24 12:59:583 1 [i][0] [i][1] [i][2] 解析 把一路上的负载数组构造出来,比较什么时候负载超重 public boolean carPooling(int[][] trips, int capacity) { int[] allTrip = new int[1001]; for (int i = 0; i ; i++) { for ... -
LeetCode解析---1306. 跳跃游戏 III
2020-06-03 22:02:29题目 这里有一个非负整数数组 arr,你...来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/jump-game-iii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 示例 1: 输入:arr -
LeetCode解析---435. 无重叠区间
2020-05-30 13:20:55来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/non-overlapping-intervals 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处 示例 1: 输入: [ [1,2], [2,3], [3,4], [1,3] ]... -
LeetCode解析---1375. 灯泡开关 III
2020-05-18 21:42:50题目 房间中有 n 枚灯泡,编号从 1 到 n,自左向右排成一排。最初,所有的灯都是关着的。 在 k 时刻( k 的取值范围是 0 到 n - ...来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/bulb-switcher-ii -
LeetCode解析---739. 每日温度
2020-05-10 11:39:06题目 根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高...解析 我们先从计算右边,那么我们计算过的位置就不需要重复计算 public int[] dailyTemperatures(int[] T) { int le -
LeetCode解析---面试题49. 丑数
2020-06-01 20:33:42题目 我们把只包含因子 2、3 和 5 的数称作丑数(Ugly ...来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/chou-shu-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解 -
LeetCode解析---152. 乘积最大子数组
2020-05-04 09:53:50题目 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字)。 示例 1: 输入: [2,3,-2,4] 输出: 6 ...来源:力扣(LeetCode) 链接:https://leetcode-... -
LeetCode解析---1419. 数青蛙
2020-06-05 13:10:37来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/minimum-number-of-frogs-croaking 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 示例 1: 输入:croakOfFrogs = ... -
LeetCode解析---1117. H2O 生成
2020-06-07 13:20:15通过次数6,996 提交次数14,172 解析 h每获取一次释放一个o许可,o每次获取两个许可(即2次h后执行一次o) import java.util.concurrent.Semaphore; import java.util.concurrent.CountDownLatch; class H2O { ... -
LeetCode解析---213. 打家劫舍 II
2020-05-16 23:24:48解析 我们要计算位于基数的和偶数取他们最大值 class Solution { public: int rob(vector<int>& nums) { int length=nums.size(); if(length==0) return 0; if(length==1) return nums[0]; vector<int> dp(length+1... -
LeetCode解析---162. 寻找峰值
2020-05-06 18:59:12解析: 根据说明,我们知道,这里要用到二分法,最后得到的 left便是峰值 class Solution { public int findPeakElement(int[] nums) { int left = 0, right = nums.length - 1; for (; left ; ) { int mid = left ... -
LeetCode解析-7. Reverse Integer
2017-10-30 19:21:347. Reverse Integer题目描述:Reverse digits of an integer.Example :Example1: x = 123, return 321 Example2: x = -123, return -321Note: The input is assumed to be a 32-bit signed integer.... -
LeetCode解析---150. 逆波兰表达式求值
2020-04-30 21:11:48题目 根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式...来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/evaluate-reverse... -
leetcode解析回文子串拆分
2013-09-06 20:28:36转载请注明来自souldak,微博:@evagle Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s. ... -
LeetCode解析---442. 数组中重复的数据
2020-05-22 11:11:13来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-all-duplicates-in-an-array 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 示例: 输入: [4,3,2,7,8,2,3,1] 输出 -
LeetCode解析---752. 打开转盘锁
2020-05-26 13:33:00示例 4: 输入: deadends = [“0000”], target = “8888” 输出:-1 解析 使用两个同时进行的广搜可以有效地减少搜索空间,一边从0000开始,一边从target开始,每次我们都找数目较少的进行,如果两边访问了同一节点... -
LeetCode解析---841. 钥匙和房间
2020-05-19 21:43:05解析 这里用深度遍历思想深度遍历的想法,看看这个房间的所有钥匙有没有到过别房间就可以 > class Solution { public boolean canVisitAllRooms(List<List<Integer>> rooms) { boolean[]dp=new boolean[rooms.size... -
LeetCode解析---514. 自由之路
2020-05-08 22:09:04解析 我们用顺序表来存每一个字符在ring中所有出现位置,这道题的难点在与我们要考虑ring中字母重复的,因为当转盘转动,有很多不确定性,所以我们每一次情况都要算 提示: ring 和 key 的字符串长度取值范围均为 1... -
LeetCode解析---125.验证回文串
2020-04-18 20:45:58题目: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: “A man, a plan, a canal: Panama” 输出: true ... -
LeetCode解析---132. 分割回文串 II
2020-04-20 22:32:07题目: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回符合要求的最少分割次数。 示例: 输入: “aab” 输出: 1 解释: 进行一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。...
-
关于pytorch语义分割二分类问题的两种做法
-
[蓝桥杯] 骰子迷题 python解法
-
access应用的3个开发实例
-
_this2.$xxxis not a function
-
Java进阶--编译时注解处理器(APT)详解
-
EaUS Video Editor(视频剪辑软件)官方中文版V1.6.8.53
-
C++ STL(十七):常用集合算法(set_intersection、set_union、set_difference)
-
华为1+X——网络系统建设与运维(中级)
-
com.termux_102.apk
-
Reliability Engineering_ Theory and Practice-.pdf
-
Androidesk-release-androidesk.zip
-
C语言零基础入门(详细讲解)
-
【Zookeeper】集群模式:架构设计猜想
-
第 46 场双周赛记录(119 / 1647)
-
应届生与IT培训生,就业谁更占优势?
-
MMM 集群部署实现 MySQL 高可用和读写分离
-
计算机网络:单播,多播
-
MySQL 备份与恢复详解(高低版本 迁移;不同字符集 相互转换;表
-
鲇鱼1000-2000.txt
-
计算机复试英语准备.pdf