自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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./**思路:矩阵从外向里顺时针打印,可以分解成从(0,0)开始顺时针遍历最外层,然后从(1,1)开始顺时针遍历第二层...

2019-03-20 16:26:45 99

原创 树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)二叉树节点public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val ...

2019-03-20 11:18:49 86

原创 合并链表

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。链表节点public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}1.非递归public class Sol...

2019-03-18 16:27:37 144

原创 反转链表的几种方法

链表节点:public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}1.遍历链表,边遍历边反转public class Solution { public ListNode ReverseList(Lis...

2019-03-18 15:32:33 262

原创 链表中倒数第k个节点

题目描述输入一个链表,输出该链表中倒数第k个结点。思路很简单,就是利用两个距离为k-1的指针遍历链表,当前面的指针走到链表最后一个节点时后面的指针指向倒数第k个节点但是这里要注意几种异常情况:1.链表为空的时候2.k<=0的时候3.链表节点数小于k的时候/*public class ListNode { int val; ListNode next = nul...

2019-03-18 13:47:02 67

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

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。/**思路:首先判断奇偶性,奇数返回1,偶数返回0*于是题目可以理解成将一个只含有1,0的数组从大到小排序,且1与1,0与0相对位置不变,即,稳定排序*稳定排序算法有冒泡排序,直接插入排序,归并排序等*这里采用冒...

2019-03-18 12:37:33 64

原创 二进制中1的个数

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。最开始的想法是通过右移判断1的个数,如下,但这种方法只对正数有效,因为负数右移最高位是补1public class Solution { public int NumberOf1(int n) { int count = 0; while(n != 0){ ...

2019-03-17 22:07:36 104

原创 变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。/**思路:跟普通跳台阶一个思路*设n级台阶有f(n)种跳法,每次可跳1~n级台阶*则最后一跳共有n种情况*跳1级:共f(n-1)种跳法*跳2级:共f(n-2)种跳法*跳3级:共f(n-3)种跳法*.......*跳n-1级:共f(1)种跳法*跳n级:共1种跳...

2019-03-17 21:20:33 116

原创 斐波那契数列的几种变形

1.跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。/**假设跳上n级台阶共f(n)种跳法*则最后一次跳跃有两种情况:*跳1阶,共f(n-1)种跳法*跳2阶,共f(n-2)种跳法*有f(n) = f(n-1) + f(n-2),*又f(1) = 1, f(2) = 2*所以此数列是一个f(1) ...

2019-03-17 17:24:32 1728

原创 【旋转数组的最小数字】

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。import java.util.ArrayList;/**二分查找*旋转后的数组可从最小元素将数组分为前...

2019-03-17 11:57:31 48

原创 两个栈实现一个队列

import java.util.Stack;/**入队:将元素入栈1*出队:进行栈空判断;栈2空栈1非空则将栈1所有元素出栈入栈到栈2再出栈,栈2非空直接出栈*注:代码出自左程云的《程序员代码面试指南》*/public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); ...

2019-03-17 00:22:15 85

原创 【回溯法】

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?/**思路:设置一个访问标记数组,true...

2019-03-15 23:23:28 117

原创 求集合的子集

题目描述请编写一个方法,返回某集合的所有非空子集。给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序。/**思路:集合A中的每个元素在子集中有两种状态:取或不取*因此,可以用n位的二进制数(n为A中元素个数)表示集合A中元素在子集中的状态*即,二进制数1到(2^n)-1表示了A的子集...

2019-03-12 23:56:34 44091 2

原创 数三角形

输入描述:第一行包含一个正整数n,表示平面上有n个点(n <= 100)第2行到第n + 1行,每行有两个整数,表示这个点的x坐标和y坐标。(所有坐标的绝对值小于等于100,且保证所有坐标不同)输出描述:输出一个数,表示能构成三角形的方案数。import java.util.*;public class Main{ public static void main(Stri...

2019-03-10 23:46:36 178

原创 【算法题】回溯

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个...

2019-03-10 18:06:54 214

原创 求斐波那契数列的几种方法

注意所有的代码都是从第0项开始的第0项为01. 迭代public class Solution { public int Fibonacci(int n) { int fn1 = 1; int fn2 = 1; if (n <= 0) { return 0; } if (n == 1 || n ...

2019-03-09 03:12:10 308

空空如也

空空如也

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

TA关注的人

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