在线编程
差不多小姐的差不多努力
这个作者很懒,什么都没留下…
展开
-
JAVA——图的遍历
1.图遍历的定义从图中某个顶点出发访问遍图中的所有顶点,并且每个顶点仅仅被访问一次。其中图的遍历分为两种,一种是图的深度优先遍历算法,一种是图的广度优先遍历算法。2.连通图的深度优先遍历算法(DFS)和广度优先遍历算法(BFS)图的深度遍历算法步骤:(1)首先选定一个未被访问过的顶点V作为起始顶点(或者访问指定的起始顶点V),并将其标记为已访问过;(2)然后搜索与顶点V邻接的所有顶点,...原创 2019-09-25 11:53:50 · 902 阅读 · 0 评论 -
Leetcode——46全排列、47全排列2(回溯法)
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]【思路1】位操作:数组中的每个元素,可以有两个状态,在数组或者不在数组,所有状态的组合就是所有...原创 2019-07-24 12:22:02 · 311 阅读 · 0 评论 -
Leetcode——118杨辉三角
118.给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数数它左上方和右上方的数的和。示例1:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]【思路】这个题就是根据杨辉三角形的推导过程求出最终的杨辉三角形。【实现代码】class Solutio...原创 2019-07-29 10:41:48 · 216 阅读 · 0 评论 -
Leetcode——动态规划triangle
palindrome-partitioning-ii题目描述:Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers(相邻的) on the row below.For example, given the following tria...原创 2019-07-11 16:41:30 · 131 阅读 · 0 评论 -
Leetcode——动态规划word-break-ii
word-break-ii题目描述:Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word.Return all such possible sentences.For example...原创 2019-07-01 11:51:10 · 253 阅读 · 0 评论 -
Leetcode——动态规划palindrome-partitioning-ii
palindrome-partitioning-ii题目描述:Given a string s, partition s such that every substring of the partition is a palindrome.Return the minimum cuts needed for a palindrome partitioning of s.For exampl...原创 2019-07-03 16:37:04 · 179 阅读 · 0 评论 -
Leetcode——回溯法 palindrome-partitioning
palindrome-partitioning题目描述:Given a string s, partition s such that every substring of the partition is a palindrome.Return all possible palindrome partitioning of s.For example, given s =“aab”,R...原创 2019-07-03 15:23:03 · 210 阅读 · 0 评论 -
Leetcode——贪心算法gas-station
gas-station题目描述:There are N gas stations along a circular route, where the amount of gas at station i isgas[i].You have a car with an unlimited gas tank and it costscost[i]of gas to travel from sta...原创 2019-07-02 15:27:10 · 387 阅读 · 0 评论 -
Leetcode——动态规划candy
word-break题目描述:There are N children standing in a line. Each child is assigned a rating value.You are giving candies to these children subjected to the following requirements:Each child must have ...原创 2019-07-02 11:25:58 · 194 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
左旋转字符串题目描述:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?。知识点:字符串解题思路:【个人思路】既然反转可以直接用Java内置函数来substrin...原创 2019-06-05 22:09:32 · 125 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
和为S的两个数字题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。知识点:数组解题思路:【牛客思路】上一道题是找到一个序列,这个题是找到两个数字。其实思路和上一题的思路一模一样但是不一样的是题上还要求找到乘积最小的。这是一个递增的数组,乘积最...原创 2019-06-05 19:34:48 · 103 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
和为S的连续正数序列题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和。他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少众连续的正数序列的和为100(至少,包括两个数)。没多久他就得到另一组连续整数和为的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快地找出所有和为S的连续正数序列?Good Luck!知识点:数组解题思路:...原创 2019-06-05 15:28:10 · 132 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
二叉树的深度题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长的路径的长度为树的深度。知识点:二叉树解题思路:【剑指offer思路】其实很简单,当该树只有一个结点时,深度为1。如果根结点只有左子树,深度为左子树深度+1。当只有右子树时,深度为右子树深度+1。当同时拥有左右子树时,深度为左右子树深度较大值+1。那么这就是一个递归...原创 2019-05-16 21:21:56 · 91 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
数组只出现一次的数字题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。知识点:数组解题思路:【个人思路】每次出现寻找数组中数字出现次数的题目,首先自然而然想到的是使用hashMap来实现。具体的代码类似于题目:第一个一个只出现一次的字符。首先把保存的数字遍历,保存进入一个hashMap,然后再遍历一遍找到出现次数为1的数字。具体代码...原创 2019-05-21 20:50:24 · 106 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
平衡二叉树题目描述:输入一棵二叉树,判断二叉树是否是平衡二叉树。知识点:二叉树解题思路:【个人思路】首先需要确定平衡二叉树的概念,平衡二叉树的左右子树高度差值的绝对值不超过1。根据上一题求二叉树的深度,求出左右子树的深度,然后相减,然后和1进行比较即可。具体代码:public class Solution { public boolean IsBalanced_Soluti...原创 2019-05-20 21:52:39 · 302 阅读 · 0 评论 -
设计模式——装饰模式(结构型)
装饰模式(1)模式动机 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任,换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不需要创造更多子类的情况下,将对象的功能加以扩展。这就是装饰模式的模式动机。(2)模式定义 装饰模式(Decorator Pattern) :动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰...转载 2019-07-24 15:11:51 · 219 阅读 · 0 评论 -
Leetcode——22括号生成(递归)
22.给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:示例:[ "((()))", "(()())", "(())()", "()(())", "()()()"]【思路】这个题使用递归法,但是题目要求是有效的括号。【实现代码】class Solution { public ...原创 2019-07-24 16:17:34 · 281 阅读 · 0 评论 -
Leetcode——242有效字母异位词
哈希表HashTable242.有效字母异位词【思考】1.排序O(NlgN)2.Map计数O(N)这个时候用一个哈希表来实现,而字母有26个正好对应一个26长度的数组,来存储也就是一个哈希表。【实现代码】...原创 2019-09-25 11:17:35 · 345 阅读 · 0 评论 -
Leetcode——238除自身以外数组的乘积
238.除自身以外数组的乘积给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入:[1,2,3,4]输出:[24,12,8,6]说明:请不要使用除法,且在O(n)时间复杂度内完成此题。【思路】根据题意,在O(n)时间复杂度内,于是此时想到首先遍历一...原创 2019-09-24 20:28:04 · 342 阅读 · 0 评论 -
Leetcode——位运算191.位1的个数
位运算介绍:实战常用的位运算操作:X&1==1 OR ==0 判断奇数偶数X=X&(X-1) 清零最低位的1X&-X 得到最低位的1191.位1的个数【思路】1.暴力判断每一位是否,和1做与运算,如果是1,则计数。这样的做法容易超时,而且有可能此时的数为负数,右移之后最高位仍要保持最高位是负数。2。使用x&(x-1)把最低位1变为0,则有多少个1...原创 2019-08-21 20:08:54 · 249 阅读 · 0 评论 -
Leetcode——50.Pow(x,n)、169求众数
递归&分治递归-循环:通过函数体进行循环分治:没有所谓的中间结果,也就是不会重复计算,当出现重复计算和递归差不多。50.Pow(x,n)实现pow(x,n),即计算x的n次幂的函数。示例1:输入: 2.00000, 10输出: 1024.00000示例2: 输入: 2.10000, 3输出: 9.26100示例3:输入: 2.00000, -2输出: 0.2...原创 2019-08-21 14:58:54 · 194 阅读 · 0 评论 -
Leetcode——70爬楼梯、120三角形的最小路径和
动态规划Dynamic Programming1,递推(递归+记忆)2.状态的定义:opt[n],dp[n],fib[n]3,状态转移方程:opt[n]=best_of(opt[n-1],opt[n-2],…)4.最优子结构DP vs 回溯 vs 贪心回溯(递归) ——重复计算贪心——永远局部最优DP——记录局部最优子结构/多种记录值70.爬楼梯假设你正在爬楼梯。需要 n 阶你...原创 2019-08-18 16:45:34 · 286 阅读 · 0 评论 -
Leetcode——171Excel列表序号
171.给定一个Excel表格中的列名称,返回其相应的列序号。例如:A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例1:输入: "A"输出: 1输入: "AB"输出: 28输入: "ZY"输出: 701【思路】标签:字符串遍历,进制转换初始化结果ans ...原创 2019-07-28 11:29:17 · 243 阅读 · 0 评论 -
Leetcode——108将有序数组转换为二叉搜索树、109将有序链表转换为二叉搜索树
108.将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -1...原创 2019-07-27 14:53:41 · 208 阅读 · 0 评论 -
Leetcode——20有效的括号
20.给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:...原创 2019-07-31 20:51:02 · 152 阅读 · 0 评论 -
Leetcode——5最长回文子串
5.给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例2:输入: "cbbd"输出: "bb"【思路】解决这类 “最优子结构” 问题,可以考虑使用 “动态规划”:1、定义 “状态”;2、找到 “状态转移方程”。记号说明: 下文中,使用记号 s[...原创 2019-07-31 19:40:37 · 152 阅读 · 0 评论 -
Leetcode——230二叉搜索树中第k小的元素
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1示例2:输入: root = [5,3,6,2,4,null,null,1], k = ...原创 2019-07-26 15:04:25 · 128 阅读 · 0 评论 -
Leetcode——78子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]...原创 2019-07-22 14:49:34 · 136 阅读 · 0 评论 -
Leetcode——237删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.说明:链表至...原创 2019-07-21 21:27:49 · 126 阅读 · 0 评论 -
Leetcode——703数据流中的第K个大元素、237滑动窗口最大值
优先队列:PriorityQueue正常入,按优先级出实现机制:1.Heap(Binary,Binomial,Fibonacci)2.Binary Search Tree703.数据流中的第K个大元素设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,...原创 2019-08-05 14:11:33 · 348 阅读 · 0 评论 -
Leetcode——94二叉树的中序遍历、102二叉树的层次遍历
94.给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]【思路1】这里使用递归的方法来进行遍历,这里是中序遍历。【实现代码】/** * Definition for a binary tree node. * public class TreeNode { * i...原创 2019-07-25 14:50:17 · 163 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
丑数题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。知识点:数组解题思路:【个人思路1】个人思路很简单也就是直接排序然后循环求出前k个即可。具体代码:import java.util.ArrayList;import java.util...原创 2019-05-07 22:08:32 · 96 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
数字在排序数组中出现的次数题目描述:统计一个数字在排序数组中出现的次数。知识点:数组解题思路:【个人思路1】统计数字出现的次数,第一想法就是首先遍历数组然后把出现的数字和次数保存在哈希表中,然后根据数字来寻找出现的次数。具体代码:import java.util.HashMap;import java.util.Map;public class Solution { ...原创 2019-05-14 21:48:51 · 94 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
把数组排成最小的数题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。知识点:数组解题思路:【个人思路】统计1的个数,立马想到对该数字的每一位的数字进行判断,于是对其进行求余相除的运算,然后统计个数即可,这是能想到最快也是最简单的方法,但是这种方法当n...原创 2019-05-06 21:38:54 · 206 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
二叉搜索树与双向链表题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。知识点:链表解题思路:【个人思路】二叉搜索树本来就是一个特殊的树的结构其左子树均小于根结点,右子树均大于根结点。按照中序遍历便可以得到排序的结果,然后把这个遍历结果保存在一个ArrayList中,然后顺序读出进行连接即可。具体代码:imp...原创 2019-04-26 17:15:41 · 68 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
大年初一头一天刷题,肯定会平平安安。调整数组顺序使奇数位于偶数前面题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变知识点:数组,排序算法解题思路:首先要把题意理解清楚,这个数组本身没有排序,是一个随意的数组,拿到这个题第一反应这个题要是使用链表来存储数组的话...原创 2019-03-29 09:58:24 · 89 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
反转链表题目描述:输入一个链表,反转链表后,输出新链表,输出新链表的表头。知识点:链表解题思路:上一题已经用过链表倒序的思想,于是这一题就迎刃而解。具体代码:思路:需要三个指针的辅助,一个保存当前结点,一个保存之前的结点,一个保存之后的结点,这样做的目的是以防链表的断裂。/*public class ListNode { int val; ListNode ne...原创 2019-03-29 09:57:27 · 86 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
合并两个排序的链表题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。知识点:链表解题思路:这两个链表是单调递增的,要合并这两个链表并且仍保持单调递增,就考虑到要比较链表结点的大小。最开始的想法是比较两个链表结点的大小,然后将结点插入链表,但是这样会造成一直移动结点而且也增加了算法复杂度,最简便的方法就是重新定义一个链表的头结点。具体...原创 2019-03-29 09:56:31 · 98 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
时隔两个月又继续刷题,有危机感的刷题。二进制中1的个数题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。知识点:位计算解题思路:拿到这个题,注意到题上说负数用补码表示,这个时候需要补一下补码的知识。首先要把一个整数转换成二进制,能想到的最笨的做法就是一直除以2。循环取余,当除数最后商1的时候,完成运算。!!!到求负数的补码完全没有思路!还是参考大神的算法!...原创 2019-02-01 22:35:09 · 130 阅读 · 0 评论 -
剑指offer之个人刷题历程记录
心情不好,何以解忧,唯有刷题。变态跳台阶题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路:还是上次那只青蛙,不过这次它可能是进步了,上次只能跳1级和2级,这次能跳很多级,6666。但是解题思路其实没咋变,就还是找规律呗,例如它现在要跳3级,它相当于从第一级台阶跳2级到第3级台阶,或者是从第2级台阶跳1级到第3...原创 2018-11-17 15:39:48 · 93 阅读 · 0 评论