自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Alex-zhai专栏

用键盘记录生活的每一瞬间

  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 找最小的K个数

问题描述: 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。方法1:利用快速排序的思想,每次取得划分元素的位置partitionIndex。该位置代表key值是整个数组的第partitionIndex+1小。将partitionIndex+1与k比较,如果小于k,继续往右划分。如果大于k,继续往左划分,直到partition

2016-04-30 18:53:40 897

原创 单链表的翻转

思路:遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。 public ListNode ReverseList(ListNode head) { if(head == null){ return head; } ListNode p1

2016-04-29 10:47:49 328

原创 判断一颗二叉树是不是对称的

对称二叉树符合的条件: 根节点以及其左右子树 左子树的左子树和右子树的右子树相同 左子树的右子树和右子树的左子树 boolean isSymmetrical(TreeNode pRoot) { if(pRoot == null){ return true; } return isMirror(pRoot.left

2016-04-28 23:46:04 928

原创 用两个栈实现队列

解题思路: 入队时,将元素压入s1。 出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> st

2016-04-28 22:56:10 462

原创 根据前序遍历和中序遍历,构造二叉树

思路:前序的第一个字母为树的根节点,然后查看中序序列中这个字母的位置,它之前的为左子树,之后的为右子树,然后分别对这两个子树的前序和中序序列做递归操作。 public TreeNode reConstructBinaryTree(int [] pre,int [] in) { int n = pre.length; TreeNode root = new Tre

2016-04-28 22:23:50 734

原创 判断一个点是否在三角形内

问题描述:一个二维坐标系中(100*100,每一维0~99),已知三角形三个顶点的坐标A、B、C,判断坐标系中的任意点:P,是否在三角形内(在三角形边上也认为在三角形内)思路:如果三角形PAB,PAC和PBC的面积之和与三角形ABC的面积相等,即可判定点P在三角形ABC内 public static boolean isInTriangle(POINT A, POINT B, POINT C

2016-04-28 17:12:10 742

原创 求二叉树的深度和宽度

题目描述:求二叉树的宽度和深度 给定一个二叉树,获取该二叉树的宽度和深度。 //二叉树的高度: public static int getHeight(BiNode head){ if(head == null){ return 0; } int leftHeight = getHeight(head.left

2016-04-28 15:57:27 1045

原创 编程之美2.10之寻找数组中的最大值和最小值

问题描述:寻找一个数组中的最大值和最小值。 方法一:扫描一遍数组,找出最大和最小方法二:将相邻两个数分为一组,较大的数放在偶数位、较小的数放在奇数位。再分别从这两部分中找出最大值和最小值。方法三:将相邻两个数分为一组,用Max和Min变量存储当前的最大值和最小值。同一数组比较之后,不交换次序,而是将下一个两个数的较大值和Max比较,较小数和Min比较。以此往后执行。方法四:采用分治思想,分别求前后

2016-04-27 15:43:43 1082

原创 编程之美2.9节之Fibonacci数列

Fibonacci数列形式:F(0) = 0,F(1)=1,F(n)=F(n-1)+F(n-2) if n>1。 求解该数列的第n项有三种方法,其中前两种方法很好理解。主要解释下第三种方法的思路: Fibonacci是二阶递推数列,所以存在一个2*2的矩阵A,使得: (Fn,Fn−1)=(Fn−1,Fn−2)∗A=...=(F1,F0)∗An−1(F_n, F_{n-1}) = (F_{n-1

2016-04-26 16:13:21 559

原创 编程之美2.7节求最大公约数问题

用java写的关于求最大公约数的三种方法:package suda.alex.chapter2; import java.util.*;public class Gcd { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = n

2016-04-26 13:15:33 655

原创 编程之美扩展问题总结2.1(2)

问题描述:给定两个正整数A和B,问A和B的二进制表示中有多少位不同? 解题思路:对A和B异或操作,转换为求一个二进制数中位数为1的问题。int Count(int A,int B) { int num = 0; int v = A^B; while(v) { if(v % 2 == 1) { nu

2016-04-25 11:33:15 1029

空空如也

空空如也

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

TA关注的人

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