leetcode刷题总结151-200

151. 翻转字符串里的单词

  描述:

    输入: " hello world! "
    输出: "world! hello"

  思路:从后往前双指针。

152. 乘积最大子数组

  描述:

    输入: [2,3,-2,4]
    输出: 6
    解释: 子数组 [2,3] 有最大乘积 6。

  思路:动态规划。dp[i][0~1]表示结尾到i 的最小值和最大值。(很可能当前的最小值*负数就成为了最大值)

153. 寻找旋转排序数组中的最小值

  描述:

    输入: [3,4,5,1,2]
    输出: 1

  思路:二分。

154. 寻找旋转排序数组中的最小值 II

  描述:

    输入: [2,2,2,0,1]
    输出: 0

  思路:二分。

155. 最小栈

  描述:

    

 

 

   思路:用一个栈实现前三个操作。另外一个栈用于存储最小元素。数量和第一个栈一样,但是不同步。

156-159  无权限。。。

160. 相交链表

  描述:

    

 

 

   思路:两个指针。A遍历完后开始从B开始,B遍历完后从A开始。A+sub(b,merge)=b+sub(a,merge)

161. 无权限。。。

162. 寻找峰值

  描述:

    输入: nums = [1,2,1,3,5,6,4]
    输出: 1 或 5
    解释: 你的函数可以返回索引 1,其峰值元素为 2;
        或者返回索引 5, 其峰值元素为 6。

  思路:二分。当mid>mid+1,那么right=mid。否则left=mid+1

163.。。。

164. 最大间距

  描述:

    输入: [3,6,9,1]
    输出: 3
    解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。

  思路:基数排序。

165. 比较版本号

  描述; 

    输入: version1 = "7.5.2.4", version2 = "7.5.3"
    输出: -1

  思路:双指针暴力法。

166. 分数到小数

  描述:

    输入: numerator = 2, denominator = 3
    输出: "0.(6)"

  思路:在循环中判断当前的余数*10是否是上一个被除数

167. 两数之和 II - 输入有序数组

  描述:

    输入: numbers = [2, 7, 11, 15], target = 9
    输出: [1,2]
    解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。

  思路:双指针。一个从前一个从后。

168. Excel表列名称

169. 多数元素

171. Excel表列序号

172. 阶乘后的零

173. 二叉搜索树迭代器

  描述:

    

 

 

   思路:中序遍历。

174. 地下城游戏

  思路:动态规划从最后一个点开始规划。

175. 组合两个表

176. 第二高的薪水

177. 第N高的薪水

178. 分数排名

179. 最大数

180. 连续出现的数字

181. 超过经理收入的员工

182. 查找重复的电子邮箱

183. 从不订购的客户

184. 部门工资最高的员工

185. 部门工资前三高的所有员工

187. 重复的DNA序列

  描述:

    输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
    输出:["AAAAACCCCC", "CCCCCAAAAA"]

  思路:滑动窗口l=10,hash.

188. 买卖股票的最佳时机 IV

  描述:

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

  思路:动态规划。dp[i第几天][j第几次交易][不卖,卖]

189. 旋转数组

  描述:

    输入: [1,2,3,4,5,6,7] 和 k = 3
    输出: [5,6,7,1,2,3,4]
    解释:
      向右旋转 1 步: [7,1,2,3,4,5,6]
      向右旋转 2 步: [6,7,1,2,3,4,5]
      向右旋转 3 步: [5,6,7,1,2,3,4]

  思路:对于5来说,移动3次后的位置为(4+3)%7=0,然后开始换1.。。

190. 颠倒二进制位

191. 位1的个数

192. 统计词频

193. 有效电话号码

194. 转置文件

195. 第十行

196. 删除重复的电子邮箱

197. 上升的温度

198. 打家劫舍

  思路:动态规划

199. 二叉树的右视图

  描述:

    

 

   思路:递归遍历。先遍历右子树。当右子树为空,那么最右边看到的就是左子树的右子树。

200. 岛屿数量

  描述:

    

 

   思路:广度优先遍历1的节点。遍历的时候设置标志位。遍历完后继续查找1的节点继续便利。

 

posted @ 2020-07-06 17:55  _Meditation  阅读(152)  评论(0编辑  收藏  举报