随笔分类 -  算法

摘要:大数加法 题目:大数加法 以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。 示例: 输入: "1","99" 返回值: "100" 说明: 1+99=100 题解:模拟 public static class Solution { public String solve(St 阅读全文
posted @ 2022-02-05 14:37 言思宁 阅读(26) 评论(0) 推荐(0) 编辑
摘要:验证回文字符串 Ⅱ 题目:验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。 示例 : 输入: s = "abca" 输出: true 解释: 你可以删除c字符。 题解 方法一:贪心 class Solution { public boolean validPa 阅读全文
posted @ 2022-01-28 10:24 言思宁 阅读(25) 评论(0) 推荐(0) 编辑
摘要:验证回文串 题目: 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 示例 : 输入: "A man, a plan, a canal: Panama" 输出: true 解释:"amanaplanacanalpanama" 是回文串 题解:双指针 cla 阅读全文
posted @ 2022-01-21 12:42 言思宁 阅读(20) 评论(0) 推荐(0) 编辑
摘要:回文链表 题目:回文链表 给定一个链表的 头节点 head ,请判断其是否为回文链表。 如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。 示例: 输入: head = [1,2,3,3,2,1] 输出: true 题解 方法一:双指针 class Solution1 { publ 阅读全文
posted @ 2022-01-20 12:22 言思宁 阅读(40) 评论(0) 推荐(0) 编辑
摘要:重排链表 题目:重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 阅读全文
posted @ 2022-01-19 12:22 言思宁 阅读(60) 评论(0) 推荐(0) 编辑
摘要:反转链表 题目:反转链表 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。 示例: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 题解:递归 原链表:1->2->3->4->5 假设3,4,5已经翻转: 则翻转2: 2.next.next=2; 2 阅读全文
posted @ 2022-01-19 12:15 言思宁 阅读(20) 评论(0) 推荐(0) 编辑
摘要:字符串查找 题目:字符串查找 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。 输入: source = "abcdabcdefg" target = "bcd" 输出 阅读全文
posted @ 2022-01-18 11:56 言思宁 阅读(30) 评论(0) 推荐(0) 编辑
摘要:字符串的排列 题目:字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 输入:s = "abc" 输出:["abc","acb","bac","bca","cab","cba"] 题解:回溯 class Solution 阅读全文
posted @ 2022-01-16 21:12 言思宁 阅读(22) 评论(0) 推荐(0) 编辑
摘要:组合总和 题目:组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以  阅读全文
posted @ 2022-01-16 21:07 言思宁 阅读(68) 评论(0) 推荐(0) 编辑
摘要:K数和II 题目:K数和II 给定n个不同的正整数,整数k(1<=k<=n1<=k<=n)以及一个目标数字。在这n个数里面找出K个数,使得这K个数的和等于目标数字,你需要找出所有满足要求的方案 样例 : 输入: 数组 = [1,2,3,4] k = 2 target = 5 输出: [[1,4],[ 阅读全文
posted @ 2022-01-16 21:04 言思宁 阅读(71) 评论(0) 推荐(0) 编辑
摘要:单词搜索 II 题目:单词搜索 II 给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词。 单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一 阅读全文
posted @ 2022-01-16 17:11 言思宁 阅读(33) 评论(0) 推荐(0) 编辑
摘要:二叉树的直径 题目:二叉树的直径 给定一颗二叉树,您需要计算树的直径长度。 二叉树的直径是树中任意两个节点之间最长路径的长度。 给定一棵二叉树 1 / \ 2 3 / \ 4 5 返回3, 这是路径[4,2,1,3] 或者 [5,2,1,3]的长度. 示例: 输入:[2,3,#,1] 输出:2 解释 阅读全文
posted @ 2022-01-14 12:28 言思宁 阅读(41) 评论(0) 推荐(0) 编辑
摘要:二叉搜索树的第k大节点 题目:二叉搜索树的第k大节点 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 示例: 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1 输出: 4 题解:dfs 右根左遍历二叉树 class 阅读全文
posted @ 2022-01-13 12:33 言思宁 阅读(23) 评论(0) 推荐(0) 编辑
摘要:二叉树中的最大路径和 题目:二叉树中的最大路径和 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和是任意两点之间路径中各节点值的总和。 示例: 输入:root = [- 阅读全文
posted @ 2022-01-12 12:09 言思宁 阅读(39) 评论(0) 推荐(0) 编辑
摘要:被围绕的区域 题目:被围绕的区域 给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。 示例: 输入:board = [["X","X","X","X"],["X",&quo 阅读全文
posted @ 2022-01-10 12:28 言思宁 阅读(24) 评论(0) 推荐(0) 编辑
摘要:旅行商问题 题目:旅行商问题 给 n 个城市(从 1 到 n),城市和无向道路成本之间的关系为3元组 [A, B, C](在城市 A 和城市 B 之间有一条路,成本是 C)我们需要从1开始找到的旅行所有城市的付出最小的成本。 一个城市只能通过一次。 你可以假设你可以到达所有的城市 示例: 输入: n 阅读全文
posted @ 2022-01-09 19:02 言思宁 阅读(97) 评论(0) 推荐(0) 编辑
摘要:旅行商问题 题目:旅行商问题 给 n 个城市(从 1 到 n),城市和无向道路成本之间的关系为3元组 [A, B, C](在城市 A 和城市 B 之间有一条路,成本是 C)我们需要从1开始找到的旅行所有城市的付出最小的成本。 一个城市只能通过一次。 你可以假设你可以到达所有的城市 示例: 输入: n 阅读全文
posted @ 2022-01-09 18:53 言思宁 阅读(142) 评论(0) 推荐(0) 编辑
摘要:全排列II 题目:全排列 II 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例: 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 题解:DFS class Solution { public void dfs( 阅读全文
posted @ 2022-01-09 18:34 言思宁 阅读(23) 评论(0) 推荐(0) 编辑
摘要:全排列 一、题目:全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 二、题解:DFS 全排列 阅读全文
posted @ 2022-01-09 18:29 言思宁 阅读(71) 评论(0) 推荐(0) 编辑
摘要:子集II 题目:子集 II 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 示例: 输入:nums = [1,2,2] 输出:[[],[1],[1,2],[1,2,2],[2],[2, 阅读全文
posted @ 2022-01-08 14:18 言思宁 阅读(23) 评论(0) 推荐(0) 编辑