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天的价格,我们要做的是求出能获取的最大利润,并且没有限制购买次数,我们可以第一天买入,最后一天卖出。也可以当天买入,第二天就卖出,然后再买入,再卖出。但是我们只能同时有一笔交易。

爬楼梯-LeetCode70
2019 年 03 月 16 日

题目描述

链接: https://leetcode-cn.com/problems/climbing-stairs/

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。问你有多少种不同的方法可以爬到楼顶?

示例 1:

输入: 2 输出: 2 有两种方法可以爬到楼顶。

第一种: 1 阶 + 1 阶

第二种: 2 阶

示例 2:

输入: 3

输出: 3

有三种方法可以爬到楼顶。

  1. 1 阶 + 1 阶 + 1 阶
  2. 1 阶 + 2 阶
  3. 2 阶 + 1 阶
微信小程序支付
2019 年 03 月 15 日

微信小程序支付流程:

wxa-7-2

根据流程图,我们支付的流程应该是:

  1. 用户在微信小程序点击下单,小程序请求我们自己的后台程序

  2. 后台在接收到下单请求后,先进行自己的业务逻辑,生成预订单,然后请求微信的下单接口。微信接口对我们请求进行校验,通过后返回 prepay_id(预付款 id)。

    • 在这里要获取小程序用户的 openid。一般在下单前就获取到了,或者在这里再进行访问微信接口进行获取
    • 发送请求时需要经过签名等操作
    • 在向微信请求时,参数中有一个通知地址,支付成功后微信会向这个地址发送通知。
    • 拿到 prepay_id 后,需要再次签名。然后将数据返回给小程序
  3. 微信小程序获取到请求响应,响应数据里面有预付款 id,然后通过微信提供的支付方法进行付款。

  4. 付款成功后,微信会向下单时提供的通知地址发送通知。通知数据里面有实际付款金额等信息。

题目描述

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2:

输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3:

输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

要注意这个题目最后要求返回的是长度,并不是最长的子串内容是什么

存在重复元素-LeetCode217
2019 年 03 月 10 日

题目描述

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 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

判断数组中是否有元素存在重复值。

搜索插入位置-LeetCode35
2019 年 03 月 06 日

题目描述

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 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

对称二叉树—LeetCode101
2019 年 02 月 25 日

题目描述

给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [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^来获取。

二进制链表转整数-LeetCode1290
2019 年 02 月 21 日

题目描述

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。

请你返回该链表所表示数字的 十进制值

示例 1:

img

输入: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