剑指offer-java实现
hello-world-早安
十年生死两茫茫……
展开
-
剑指offer:第46题计算1+2+3+……+n;
思路一:采用右移运算符:import java.util.Scanner;public class n_add { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int s = scanner.nextInt(); Sys原创 2017-05-26 11:27:20 · 251 阅读 · 0 评论 -
剑指offer:第49题字符串转化成整型(题目要求:不要用转换函数)
思路:拆分在合并,有非数字符号的return 0;public class _Test49 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); Syste原创 2017-06-08 17:20:37 · 291 阅读 · 0 评论 -
剑指offer:第8题旋转数组的最小数字
public class _Test_08 { public static void main(String[] args) { int[] array = {1,2,0,1,1}; System.out.println(findMinNum(array)); } private static Integer findMinNum(int[] a原创 2017-07-11 17:31:17 · 213 阅读 · 0 评论 -
剑指offer:第10题求二进制1的个数
public static int CountOne(int sr) { int count = 0;char [] c =Integer.toBinaryString(sr).toCharArray(); for (int i = 0; i < c.length; i++) { if(c[i]=='1'){原创 2017-05-17 19:37:27 · 215 阅读 · 0 评论 -
剑指offer:第14题输入一组数,奇数前偶数后
/*输入一个整数数组,实现一个函数来调整该数组中数字的顺序, * 使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分, * 并保证奇数和奇数,偶数和偶数之间的相对位置不变。 */原创 2017-05-18 12:26:20 · 426 阅读 · 0 评论 -
剑指offer:第44题扑克牌的顺子
import java.util.Arrays;public class _Test_44{ public static void main(String[] args) { int[] numbers = {1,3,6,4,5}; _Test_44 c = new _Test_44(); boolean f = c.isCountious(n原创 2017-06-15 14:55:33 · 235 阅读 · 0 评论 -
剑指offer:第31题连续子数组的最大和
public class _Test_31_1{ public int FindGreatestSumOfSubArray(int[] array) { int max = array[0],tempMax = array[0]; for(int i = 1, len = array.length; i < len; ++i) { tem原创 2017-07-15 17:13:18 · 299 阅读 · 0 评论 -
剑指offer:第32题从1到n整数中1出现的次数
编程之美上的思路:public class _Test_32 { public long countOne(long n) { long count = 0; long i = 1; long current = 0, after = 0, before = 0; while ((n / i) != 0) {原创 2017-07-15 17:18:21 · 255 阅读 · 0 评论 -
剑指offer:第28题字符串全排列
public class _Test_28_1 { public static void main(String[] args) { char [] buf ={'a','b','c'}; perm(buf, 0, buf.length - 1); } public static void perm(char[] buf,int start,i原创 2017-08-08 15:47:46 · 397 阅读 · 0 评论 -
剑指offer:第42题反转单词顺序VS左旋转字符串
常规思路:就是按照普通字符串拆分-添加完成的……public class Solution { public String ReverseSentence(String str) { if(str == null){ return null;} if(str.trim().equals("")){ return str;原创 2017-06-08 16:15:44 · 256 阅读 · 0 评论 -
剑指offer:第6题重建二叉树
public class _Test_6 { public static TreeNode reConstructBinaryTree(int [] pre,int [] in) { TreeNode root=reConstructBinaryTree(pre,0,pre.length-1,in,0,in.length-1); return root;原创 2017-06-19 19:35:21 · 329 阅读 · 0 评论 -
剑指offer:第24题二叉树搜索树的后序遍历序列
//输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结//果。是返回true,否则返回false//思路:就是利用递归思想,先找到根节点,然后在拆分左右、递归。public class _24_Test { public static void main(String[] args) { int[] array={1,5,2,4,3}; _24_原创 2017-06-05 15:26:00 · 248 阅读 · 0 评论 -
剑指offer:第25题二叉树和为某一值得路径
//思路:可以利用全路径逐层递减,在用递归来寻找路径import java.util.ArrayList;import java.util.List;public class _Test_25_2 { ArrayList<ArrayList<Integer>> arrayListall = new ArrayList<ArrayList<Integer>>(); ArrayLis原创 2017-06-06 22:34:02 · 187 阅读 · 0 评论 -
剑指offer:第20题顺时针打印矩阵;
//常规思路:就是觉得顺时针去打印比较简单。package cn.it.test;import java.util.ArrayList;public class _21_1test1 { public ArrayList<Integer> printMatrix (int [][] matrix){ if (matrix == null) { r原创 2017-06-03 13:04:33 · 363 阅读 · 0 评论 -
剑指offer:第29题寻找数组中出现次数超过一半的数字
常规思路:对数组进行排序,之后找出中位数,判断个数是不是超过数组的一半。import java.util.Arrays;public class _Test_29 { public static void main(String[] args) { int [] array ={1,2,3,2,2,2,5,4,2}; System.out.println(g原创 2017-06-07 17:39:12 · 270 阅读 · 0 评论 -
剑指offer:第22题栈的压入、弹出顺序
思路:就是借用一个辅助的栈,遍历压栈顺序,将第一个放入栈中,这里是1.然后判断栈顶元素是不是出栈的第一个元素,这里是4,很显然不相等,所以我们继续压栈,知道相等以后开始出栈,出栈的一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压栈顺序遍历完成,如果辅助栈还不为空,说明弹出序列不是该栈的弹出顺序。举例: 入栈1,2,3,4,5 出栈4,5,3,2,1 首先1入辅助栈,此原创 2017-06-04 10:32:02 · 395 阅读 · 0 评论 -
剑指offer:第17题合并链表
//递归思路:public class Merge1_1 { public ListNode merge(ListNode list1, ListNode list2) { if (list1 == null) { return list2; } if (list2 == null) { retu转载 2017-05-22 16:32:33 · 259 阅读 · 0 评论 -
剑指offer:第23题从上往下打印二叉树-广度遍历
思路:可以利用队列的先进先出特点来实现import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;public class _23_Node { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { Ar原创 2017-06-04 10:43:01 · 242 阅读 · 0 评论 -
剑指offer:第5题从尾到头打印链表
1、题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。 思路1:如果是从本质上把链表中的指针节点反过来,改变指针方向,那么输出很简单,但是一般面试官不会让你这么做的。于是我们就不得不借助其他的数据结构,例如:栈,利用它的“先进后出”的特点。遍历的时候,放入栈中。输出的时候,在从栈顶逐个输出节点的值。原创 2017-05-12 15:22:10 · 280 阅读 · 0 评论 -
求出一有序数组中有两个数字之和等于某一常数的所有组合数。
public class Test_1 { public static void main(String[] args) { int a_sort[] = {1,30,50,55,70,80,99}; System.out.println(getNumber(a_sort)); } public static int getNumber...原创 2018-09-03 11:05:01 · 769 阅读 · 1 评论