All
题目描述
给定一个数组,它的第 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
题目中给出数组,第i个元素表示第i天的价格,我们要做的是求出能获取的最大利润,并且没有限制购买次数,我们可以第一天买入,最后一天卖出。也可以当天买入,第二天就卖出,然后再买入,再卖出。但是我们只能同时有一笔交易。
题目描述
链接: https://leetcode-cn.com/problems/climbing-stairs/
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。问你有多少种不同的方法可以爬到楼顶?
示例 1:
输入: 2 输出: 2 有两种方法可以爬到楼顶。
第一种: 1 阶 + 1 阶
第二种: 2 阶
示例 2:
输入: 3
输出: 3
有三种方法可以爬到楼顶。
- 1 阶 + 1 阶 + 1 阶
- 1 阶 + 2 阶
- 2 阶 + 1 阶
微信小程序支付流程:

根据流程图,我们支付的流程应该是:
-
用户在微信小程序点击下单,小程序请求我们自己的后台程序
-
后台在接收到下单请求后,先进行自己的业务逻辑,生成预订单,然后请求微信的下单接口。微信接口对我们请求进行校验,通过后返回 prepay_id(预付款 id)。
- 在这里要获取小程序用户的 openid。一般在下单前就获取到了,或者在这里再进行访问微信接口进行获取
- 发送请求时需要经过签名等操作
- 在向微信请求时,参数中有一个通知地址,支付成功后微信会向这个地址发送通知。
- 拿到 prepay_id 后,需要再次签名。然后将数据返回给小程序
-
微信小程序获取到请求响应,响应数据里面有预付款 id,然后通过微信提供的支付方法进行付款。
-
付款成功后,微信会向下单时提供的通知地址发送通知。通知数据里面有实际付款金额等信息。
题目描述
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2:
输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3:
输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
要注意这个题目最后要求返回的是长度,并不是最长的子串内容是什么
题目描述
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 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
判断数组中是否有元素存在重复值。
题目描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5 输出: 2 示例 2:
输入: [1,3,5,6], 2 输出: 1 示例 3:
输入: [1,3,5,6], 7 输出: 4 示例 4:
输入: [1,3,5,6], 0 输出: 0
题目描述
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树
[1,2,2,3,4,4,3]是对称的。1 / \ 2 2 / \ / \ 3 4 4 3但是下面这个
[1,2,2,null,3,null,3]则不是镜像对称的:1 / \ 2 2 \ \ 3 3说明:
如果你可以运用递归和迭代两种方法解决这个问题,会很加分。
题目描述
输入数字
n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:
输入: n = 1 输出: \[1,2,3,4,5,6,7,8,9]说明:
- 用返回一个整数列表来代替打印
- n 为正整数
首先要获取最大值,然后遍历添加到数组中,而通过位数获取最大值可以通过10^n^来获取。
题目描述
给你一个单链表的引用结点
head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。
示例 1:
输入:head = \[1,0,1] 输出:5 解释:二进制数 (101) 转化为十进制数 (5)示例 2:
输入:head = \[0] 输出:0示例 3:
输入:head = \[1] 输出:1示例 4:
输入:head = \[1,0,0,1,0,0,1,1,1,0,0,0,0,0,0] 输出:18880示例 5:
输入:head = \[0,0] 输出:0提示:
- 链表不为空。
- 链表的结点总数不超过
30。- 每个结点的值不是
0就是1。
