自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 算法——0-1背包问题

题目描述有一个容量为 N 的背包,要用这个背包装下物品的价值最大,这些物品有两个属性:体积 w 和价值 v。解题思路记忆化搜索/// 背包问题/// 记忆化搜索/// 时间复杂度: O(n * C) 其中n为物品个数; C为背包容积/// 空间复杂度: O(n * C)public class Solution { private int[][] memo; p...

2019-05-05 10:06:25 319

原创 Android 作业:简单计算器实现

image.png思路首先设计界面,activity_main.xml计算器界面,需要:文本框TextView——显示数字;数字、符号按钮Button<?xml version="1.0" encoding="utf-8"?><GridLayout xmlns:android="http://schemas.a...

2019-04-01 12:07:00 1369 1

原创 JSP 课后作业:编写 Tag 文件计算矩形、圆形面积

题目编写两个 Tag 文件 Rect.tag 和 Circle.tag。Rect.tag 负责计算并显示矩形的面积,Circle.tag 负责计算并显示圆的面积。编写一个 JSP 页面 lianxi6.jsp,该 JSP 页面使用Tag标记调用 Rect.tag 和Circle.tag。调用 Rect.tag 时,向其传递矩形的两个边的长度;调用 Cir...

2019-03-26 10:58:00 3327

原创 JSP 课后作业:编写 Tag 文件计算三角形面积

题目书本 p59 第 7 题编写一个 Tag 文件 GetArea.tag 负责求出三角形面积,并使用 variable 指令返回三角形的面积给调用该Tag 文件的 JSP 页面。JSP 页面负责显示 Tag 文件返回的三角形的面积。JSP 在调用 Tag 文件时,使用 attribute 指令将三角形三边的长度传递给 Tag 文件。one.jsp 和...

2019-03-26 10:38:00 4850

原创 39. 平衡二叉树

题目描述判断是否平衡二叉树 - >左右子树高度差不超过 1。代码实现public class Solution { boolean isBalance = true; public boolean IsBalanced_Solution(TreeNode root) { high(root); r...

2019-03-14 12:43:00 97

原创 40. 数组中只出现一次的数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。化简问题(只有一个不同的)在一个整数数组中,除了一个数之外,其他的数出现的次数都是两次,求出现一次的数,要求时间复杂度尽可能的小。例如数组{1,2,2,3,3,6,6},出现一次的数是1.从题目的描述可以看出,数组中只有一个数字出现了一次,其他的数...

2019-03-14 12:43:00 136

原创 28. 数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题思路多数投票问题,可以利用 Boyer-Moore Majority Vote Algorithm 来解决这个问题,使得时间复杂度...

2019-03-14 12:42:00 179

原创 29. 最小的 K 个数

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。解题思路大小为 K 的最小堆复杂度:O(NlogK) + O(K)特别适合处理海量数据应该使用大顶堆来维护最小堆,而不能直接创建一个小顶堆并设置一个大小,企图让小顶堆中的元素都是最小元素。维护一个大小为 K 的...

2019-03-14 12:42:00 100

原创 32. 把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组 {3,32,321},则打印出这三个数字能排成的最小数字为 321323。解题思路可以看成是一个排序问题,在比较两个字符串 S1 和 S2 的大小时,应该比较的是 S1+S2 和 S2+S1 的大小,如果 S1+S2 < S2+S1...

2019-03-14 12:42:00 130

原创 38. 二叉树的深度

题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。代码实现public class Solution { public int TreeDepth(TreeNode root) { return root == null ? 0 : Math.max...

2019-03-14 12:42:00 103

原创 31. 从 1 到 n 整数中 1 出现的次数

题目描述求出 1 ~ 13 的整数中1出现的次数,并算出 100 ~ 1300 的整数中1出现的次数?为此他特别数了一下 1 ~ 13 中包含1的数字有 1、10、11、12、13 因此共出现 6 次,但是对于后面问题他就没辙了。ACMer 希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中 1 出现的次数(从1 到 n 中1出现的次数...

2019-03-14 12:42:00 125

原创 33. 丑数

题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路方法二:创建数组保存已经找到的丑数,用空间换时间的解法:前面的算法之所以效率低,很大程度上是因为不管一个数是不是丑数我们对它都要作计算。接下来我们试着找...

2019-03-14 12:42:00 90

原创 37. 数字在排序数组中出现的次数

题目描述统计一个数字在排序数组中出现的次数。代码实现public class Solution { public int GetNumberOfK(int [] array , int k) { if(array==null || array.length<=0) return 0; ...

2019-03-14 12:42:00 101

原创 27. 字符串的排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解题思路 这一段就是回溯法,这里以"abc"为例 ...

2019-03-14 12:42:00 119

原创 30. 连续子数组的最大和

题目描述{6, -3, -2, 7, -15, 1, 2, 2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。代码实现public class Solution { public int FindGreatestSumOfSubArray(int[] nums) { if (nums.length==0 || nu...

2019-03-14 12:42:00 98

原创 36. 两个链表的第一个公共节点

题目描述输入两个链表,找出它们的第一个公共结点。image.png代码实现思路一开始遍历两遍链表获取两个表的长度,比较长度让长的一个先走差值个步长,再两个一起走。(快慢指针思想,也是链表问题的一般性思路)public class Solution { public ListNode FindFirstCommonNode(...

2019-03-14 12:42:00 90

原创 35. 数组中的逆序对

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007解题思路暴力解法顺序扫描整个数组,每扫描到一个数字的时候,逐个比较该数字和它后面的数字的大小。如果后面的数字比它小,则这两个数字就组成一个逆...

2019-03-14 12:42:00 111

原创 34. 字符流中第一个不重复的字符

题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).解题思路最直观的解法是使用 HashMap 对出现次数进行统计,但是考虑到要统计的字符范围有限,因此可以使用整型数组代替 HashMap。代码实现public int First...

2019-03-14 12:42:00 111

原创 26. 二叉搜索树与双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路代码实现/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; pub...

2019-03-14 12:42:00 188

原创 22. 从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。代码实现public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); ...

2019-03-14 12:41:00 99

原创 24. 二叉树中和为某一值的路径

题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路路径从根节点开始,应该用类似于前序遍历的方式访问树节点。我们需要整个路径,就需要一个容器保存经过路径上的节点,以及一个变量记录当前已有...

2019-03-14 12:41:00 73

原创 25. 复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路思路1:先复制原始链表的结点在元素链表的头结点开始找每个结点的random。每次都要从投开始找,然后连接起来,所以时间...

2019-03-14 12:41:00 114

原创 23. 二叉搜索树的后序遍历

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。假设输入的数组的任意两个数字都互不相同。image.png解题思路性质:二叉排序树的性质:左子树上所有节点的值均小于它的根节点;右子树上所有节点的值均大于它的根节点。二叉排序树后序遍历的性质:序列最后一个数字是根节点,序列剩余部分分成两部分,前一部分是左子...

2019-03-14 12:41:00 135

原创 解决 Centos7 系统 ifconfig 不显示 ipv4 的问题

我是 Centos7 (centos6 的是 eth0),所以网卡默认是 ens33第一步:sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33第二步:只需要将最后一项:ONBOOT=no 改成 yes输入 :wq 保存退出image.png第三步:重启网卡服务:/et...

2019-03-14 11:16:00 2066 1

原创 21. 栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。解题思路使用一个栈来模拟压入弹出操作。代码实现public b...

2019-03-13 22:39:00 126

原创 20. 包含 min 函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的 min 函数。解题思路直接用一个 minStack 栈维护最小元素就行了代码实现private Stack<Integer> dataStack = new Stack<>();private Stack<Integer> minStack ...

2019-03-13 22:39:00 105

原创 19. 顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解题思路循环条件怎么判定?一个矩阵,给定起点(startX,startY)...

2019-03-13 22:38:00 129

原创 17. 树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)image.png解题思路要查找树A中是否存在和树B结构一样的子树,我们可以分两步:第一步在树A中找到和B的根节点的值一样的结点R,第二步再判断树A中以R为根结点的子树是不是包含和树B一样的结构。以上面的两棵树为例来详细分析这个过程。首...

2019-03-13 22:37:00 85

原创 18. 二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树image.png代码实现public class Solution { public void Mirror(TreeNode root) { if (root == null) { return; ...

2019-03-13 22:37:00 96

原创 16. 合并两个排序的链表

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路递归public ListNode Merge(ListNode list1, ListNode list2) { if (list1 == null) return list2; if (list2 == n...

2019-03-13 22:35:00 66

原创 15. 反转链表

解题思路递归public ListNode ReverseList(ListNode head) { //递归终止条件:找到链表最后一个结点 if (head == null || head.next == null) { return head; } //先反转后...

2019-03-13 22:35:00 82

原创 13. 调整数组的顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。这和书本不太一样。解题思路复制出一个新的数组 copy[ ],然后统计出数组奇数个数,作为新的偶数的起始索引,再设置一个奇数的索引(0),遍历复制的新数组,维护两个指针,按奇数...

2019-03-13 22:34:00 70

原创 14. 链表中倒数第 K 个节点

题目描述输入一个链表,输出该链表中倒数第k个结点。解题思路设链表的长度为 N。设两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到 N - K 个节点处,该位置就是倒数第 K 个节点。代码实现public ListNode ...

2019-03-13 22:34:00 80

原创 12. 数值的整数次方

题目描述给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent,求 base 的 exponent 次方。解题思路下面的讨论中 x 代表 base,n 代表 exponent。因为 (x*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。代码实现public...

2019-03-13 22:33:00 115

原创 11. 二进制中的一个数

题目描述输入一个整数,输出该数二进制表示中 1 的个数。原码反码补码 可能是最通俗易懂的 Java 位操作运算讲解解题思路代码实现会陷入死循环的解法如果是负数,因为最高位一直是 1 ,所以会陷入死循环public class Solution { public int NumberOf1(int n) { int ...

2019-03-13 22:32:00 102

原创 10. 矩形覆盖

题目描述一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。解题思路n=1 - 只有横放一个矩形一种解决办法n=2 - 有横放一个矩形,竖放两个矩形两种解决办法n=3 - n=2的基础上加1个横向,n=1的基础上加2个竖向n=4 - n=3的基础上加1个横向,n=2的基础上加2个竖向···...

2019-03-13 22:31:00 94

原创 9. 跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。问题分析设f(n)表示青蛙跳上n级台阶的跳法数。当只有一个台阶时,即n = 1时, 只有1中跳法;当n = 2时,有两种跳法;当n = 3 时,有3种跳法;当n很大时,青蛙在最后一步跳到第n级台阶时,有两种情况:一种...

2019-03-13 22:30:00 210

原创 8. 变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路1.根据斐波那契数列公式拓展发现跳到第N个台阶最后一跳有N-1种可能(有可能从第一个台阶到第N-1个台阶)所以F(n) = F(n-1) + F(n-2)+...+F(n-n+1)由于F(n-1) = F(n-2)+F(n-...

2019-03-13 22:29:00 111

原创 7. 斐波那契数列

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39解法一: 使用递归,但是递归由于会开辟新的方法栈,于是时间和空间开销都比循环要大,而且还会有一个严重的问题:调用栈溢出。public class Solution { public int Fibonacci(int...

2019-03-13 22:28:00 163

原创 6. 旋转数组的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解法: (1)我们用两个指针left,right分别指向数组的第一个元...

2019-03-13 22:27:00 159

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除