寻找峰值
题目峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞ 。 你必须实现时间复杂度为 O(log n) 的算法来解决此问题。 12345示例 1:输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。 123456示例 2:输入:nums = [1,2,1,3,5,6,4]输出:1 或 5 解释:你的函数可以返回索引 1,其峰值元素为 2; 或者返回索引 5, 其峰值元素为 6。 提示: 1 <= nums.length <= 1000-231 <= nums[i] <= 231 - 1对于所有有效的 i 都有 nums[i] != nums[i + 1] 题解123456789101112func findPeakElement(nums []int) int { l, r := 0, len(nums) - 1...
买卖股票的最佳时机
题目给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 题解思路很简单只需记录历史上可以买入股票价格的最低点并不断更新,然后计算未来股票价格减去历史最低价格的利润求取最大值即可 12345678910111213func maxProfit(prices []int) int { hisMinPrice := prices[0] ans := 0 for _, v := range prices { if hisMinPrice > v { hisMinPrice = v } if v - hisMinPrice > ans { ans = v -...
遗留系统
...
统一过程
统一过程(RUP)把一个项目分为四个不同的阶段: 构思阶段(初始/初启阶段):定义最终产品视图和业务模型、确定系统范围。 细化阶段(精化阶段):设计及确定系统架构、制定工作计划及资源要求。 构造阶段:开发剩余构件和应用程序功能,把这些构件集成为产品,并进行详细测试。 移交阶段:确保软件对最终用户是可用的,进行β测试,制-作产品发布版本。 6个核心过程工作流:业务建模、需求、分析与设计、实现、测试、部署。3个核心支持工作流:配置与变更管理、项目管理、环境。
螺旋矩阵
题目给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2: 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7] 提示: m == matrix.lengthn == matrix[i].length1 <= m, n <= 10-100 <= matrix[i][j] <= 100 题解按层模拟1234567891011121314151617181920212223242526func spiralOrder(matrix [][]int) []int { n, m := len(matrix), len(matrix[0]) top, bottom, left, right := 0, n, 0, m ans :=...
二叉树的中序遍历
题目给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root = [1,null,2,3]输出:[1,3,2]示例 2: 输入:root = []输出:[]示例 3: 输入:root = [1]输出:[1] 提示: 树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 题解 https://leetcode.cn/problems/binary-tree-inorder-traversal/solutions/25220/yan-se-biao-ji-fa-yi-chong-tong-yong-qie-jian-ming/ 官方题解中介绍了三种方法来完成树的中序遍历,包括: 递归 借助栈的迭代方法 莫里斯遍历 在树的深度优先遍历中(包括前序、中序、后序遍历),递归方法最为直观易懂,但考虑到效率,我们通常不推荐使用递归。 栈迭代方法虽然提高了效率,但其嵌套循环却非常烧脑,不易理解,容易造成 “一看就懂,一写就废”...
最小覆盖子串
题目给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果 s 中存在这样的子串,我们保证它是唯一的答案。 示例 1: 输入:s = “ADOBECODEBANC”, t = “ABC”输出:”BANC”解释:最小覆盖子串 “BANC” 包含来自字符串 t 的 ‘A’、’B’ 和 ‘C’。示例 2: 输入:s = “a”, t = “a”输出:”a”解释:整个字符串 s 是最小覆盖子串。示例 3: 输入: s = “a”, t = “aa”输出: “”解释: t 中两个字符 ‘a’ 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。 提示: m == s.lengthn == t.length1 <= m, n <= 105s 和 t 由英文字母组成 进阶:你能设计一个在 o(m+n)...
UML
分类 UML2.0本题考查的是UML图的相关知识:UML 2.0包括14种图,分别列举如下: 类图(class diagram)。类图描述一组类、接口、协作和它们之间的关系。在OO系统的建模中,最常见的图就是类图。类图给出了系统的静态设计视图,活动类的类图给出了系统的静态进程视图。 对象图(object diagram)。对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视图或静态进程视图,但它们是从真实案例或原型案例的角度建立的。 构件图(component diagram)。构件图描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建大的系统来说,构件图是很重要的。构件图是类图的变体。 组合结构图(composite structure diagram)。组合结构图描述结构化类(例如,构件或类)的内部结构,包括结构化类与系统其余部分的交互点。组合结构图用于画出结构化类的内部内容。 用例图(use case...