随笔分类 - 数据结构与算法
链表、队列、数组、字符串等
摘要:二叉搜索树 二叉搜索树又称二叉排序树,具有以下性质: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 注意:二叉搜索树中序遍历的结果是有序的。 95. 不同的二叉搜索树 II 给你一个整数 n ,
阅读全文
摘要:133. 克隆图 给你无向连通图中一个节点的引用,请你返回该图的深拷贝(克隆)。 图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。 class Node { public int val; public List<Node> neighbors; } 测试用例格
阅读全文
摘要:1. 问题描述 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数: () 得 1 分。 AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。 (A) 得 2 * A 分,其中 A 是平衡括号字符串。 示例 1: 输入: "()" 输出: 1 示例 2: 输入: "(())" 输出:
阅读全文
摘要:1. 问题描述 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数 就返
阅读全文
摘要:1. 问题描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII,
阅读全文
摘要:1. 问题描述 给你一个字符串 s,请你反转字符串中单词的顺序。 单词是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的单词分隔开。 返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间
阅读全文
摘要:1. 问题描述 给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意:给定数字的范围是 [0, 108] 2. 题解
阅读全文
摘要:1. 问题描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p
阅读全文
摘要:1. 问题描述 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而 123 不是。-2^31 <= x <= 2^31 - 1 示例 1: 输入:x = 121 输出:t
阅读全文
摘要:1. 问题描述 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。s 由英文字母(大写和小写)、数字(0-9)、' '、'+'、'-' 和 '.' 组成。 函数 myAtoi(string s) 的算法如下
阅读全文
摘要:1. 问题描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1 输入: 123 输出: 321 示例 2 输入: -123 输出: -321 示例 3 输入: 120 输出: 21 注意: 假设当前环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^3
阅读全文
摘要:1. 问题描述 将一个给定字符串 s 根据给定的行数 numRows,以从上往下、从左到右进行 Z 字形排列。s 由英文字母(小写和大写)、',' 和 '.' 组成。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: P A H N A P L S I I G Y I
阅读全文
摘要:1. 问题描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2 输入: "cbbd" 输出: "bb" Related Topics 字符串 动态规划 2
阅读全文
摘要:1. 问题描述 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。 进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗? 示例 1 输入:nums1 = [1,3], nums2 = [2] 输出:2.00
阅读全文
摘要:1. 问题描述 给定一个字符串,请你找出其中【不含有重复字符】的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以
阅读全文
摘要:1. 问题描述 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 [逆序] 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,将这两个数相加起来,则会返回一个新的链表来表示它们的和。 可以假设除了数字 0 之外,这两个数都不会以 0 开头。 输入:(2 -> 4 ->
阅读全文
摘要:1. 问题描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那【两个】整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因
阅读全文