
算法与数据结构
文章平均质量分 85
暗语寒飞
php程序员
展开
-
456. 132模式│leetcode
给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。进阶:很容易想到时间复杂度为 O(n^2) 的解决方案,你可以设计一个时间复杂度为 O(n logn) 或 O(n) 的解决方案吗?示例 1原创 2021-03-24 15:40:18 · 235 阅读 · 0 评论 -
逆波兰表达式│算法与数据结构
零: 提出问题假如需要你将两个已知的数字相加或者相乘,用代码表达出来是不是非常的 easy。再假如给出的是类似 1+1 由一个符号两个数字组成的字符串,要求出它的结果,可以用 split() 函数分割字符串后进行计算,也是没有多少难度。那就再升级一步,如果这个字符串不止有两个数字和一个符号,是一个包含加减乘除和括号的复杂算术表达式呢?比如下面的一个算术表达式:1 + ( 2 - 3 * 4 ) / 5 + 6我们可以使用 栈 来完成这个算术表达式的计算。创建两个栈分别存放数字和符号,然后通过符号间原创 2021-03-18 10:02:47 · 440 阅读 · 0 评论 -
224. 基本计算器│leetcode
实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。示例 1:输入:s = "1 + 1"输出:2示例 2:输入:s = " 2-1 + 2 "输出:3示例 3:输入:s = "(1+(4+5+2)-3)+(6+8)"输出:23提示:1. 1 <= s.length <= 3 * 1052. s 由数字、'+'、'-'、'('、')'、和 ' ' 组成3. s 表示一个有效的表达式题目给出, 难度为困难.刚审完题, 第一感觉还是挺简单的嘛,原创 2021-03-10 17:06:57 · 178 阅读 · 0 评论 -
MergeSort -- 归并排序│算法与数据结构
众所周知,以元素之间进行比较的方式进行排序的算法,在时间复杂度上最低也只能是 O(nlog^n),归并排序算法的时间复杂度就是 O(nlog^n)。归并排序是分治策略的一个典型应用。分治策略就是将大的问题进行多次分割,生成多个小的子问题,直到分割成最小单位。这些小问题是可以轻松解决的,递归合并已解决的小问题,最终解决原问题。归并排序就是依照分治策略,将一个无序的序列多次分割,直到每个子序列都是最小单位(只有一个元素或空序列),这些子序列都可以被当作有序序列。这时针对子序列的排序问题解决了,那么只需要注意原创 2021-01-16 10:42:43 · 163 阅读 · 0 评论