
算法
fireworks_l
追影的人.
展开
-
LeetCode——24. 两两交换链表中的节点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]思路:记录一个非常好的递归思想,为以后运用递归打下基础。递归思想:题目要求是链表节点两两相交,链表1-> 2-> 3-> 41和2交换,3和4交换。我们可以想象把链原创 2020-11-03 17:35:05 · 169 阅读 · 0 评论 -
LeetCode——941. 有效的山脉数组
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3在 0 < i < A.length - 1 条件下,存在 i 使得:A[0] < A[1] < ... A[i-1] < A[i]A[i] > A[i+1] > ... > A[A.length - 1]示例 1:输入:[2,1]输出:false示例 2:输原创 2020-11-03 15:30:09 · 126 阅读 · 0 评论 -
leetcode:8. 字符串转换整数 (atoi)——代码详解
题目:请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是一个有原创 2020-10-29 11:55:24 · 180 阅读 · 0 评论 -
leetCode:6. Z 字形变换
题目描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s原创 2020-10-27 16:37:45 · 466 阅读 · 0 评论 -
Java——最长回文子串(Longest Palindromic Substring)(中心扩展算法)(代码详细步骤讲解)
最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”中心扩展算法:思路:中心扩展法,首先并不知道中心在哪,所以从字符串第一位开始试,因为中间位可能是重复的,比如abba;中间位b就是重复的,所以定义变量low和high;low:相当于指向中间位置的第一位;high:相当于指向中间位置最后一位;原创 2020-09-02 16:29:37 · 710 阅读 · 0 评论 -
leetcode——662:求二叉树最大宽度
给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。示例 1:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: 4解释: 最大值出现在树的第 3 层,宽度为 4 (5,3,null,9)。示例 2原创 2020-08-31 14:47:26 · 690 阅读 · 0 评论 -
二叉树的最大最小深度——BFS和DFS初级应用
二叉树的最小深度,BFS和DFS算法的初级入门应用,特此记录一下。广度优先搜索算法(Breadth-First-Search,缩写为 BFS),是一种利用队列实现的搜索算法。深度优先搜索的步骤分为 1.递归下去 2.回溯上来。顾名思义,深度优先,则是以深度为准则,先一条路走到底,直到达到目标。这里称之为递归下去。否则既没有达到目标又无路可走了,那么则退回到上一步的状态,走其他路。这便是回溯上来。深度优先搜索算法(Depth-First-Search,缩写为 DFS),是一种利用递归实现的搜索算法。广度原创 2020-08-21 10:03:51 · 436 阅读 · 0 评论 -
剑指offer——重建二叉树(思路与解释)
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7限制:0 <= 节点个数 <= 5000二叉树遍历序列特性:先序遍历:根节点→左子树→右子树。中序遍历:左子树→根节点→右子树。后续遍历原创 2020-08-10 10:08:48 · 271 阅读 · 0 评论 -
刷题记录——LeetCode:面试题68 - II. 二叉树的最近公共祖先
LeetCode:面试题68 - II. 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null...原创 2020-04-14 22:26:03 · 242 阅读 · 0 评论 -
刷题记录——LeetCode:1. 两数之和
LeetCode:1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回...原创 2020-04-14 21:24:29 · 264 阅读 · 1 评论 -
刷题记录——LeetCode: 2.两数相加
LeetCode:2.两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出...原创 2020-04-14 20:57:43 · 177 阅读 · 0 评论 -
算法符号学习记录---符号Θ、Ο、Ω学习记录
算法符号学习记录—符号Θ、Ο、Ω学习记录(1)Θ (西塔) 紧确界。 相当于"="(同阶)(2)O (大欧) 上界。  ...原创 2020-03-18 11:11:12 · 1627 阅读 · 0 评论 -
哈希表、Java中HashMap
哈希表、Java中HashMap 原创 ...转载 2020-03-17 15:29:08 · 200 阅读 · 0 评论 -
动态规划算法(斐波那契数列,剪绳子问题)
记录学习的动态规划算法。1.理论理解:基本思想动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法...原创 2020-02-23 19:17:33 · 1000 阅读 · 0 评论 -
算法题:剪绳子(贪心算法)
题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)输出描述...原创 2020-02-20 20:52:30 · 1845 阅读 · 0 评论