算法
dongqinging
这个作者很懒,什么都没留下…
展开
-
Java栈的应用检测平衡符号
本文来源于啊:http://blog.csdn.net/hengjie2009/article/details/8478863package cn.thj.data_structures;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.Input原创 2015-09-27 23:29:10 · 2183 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面Java
题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。package offer;public class ReorderOddEven { public static void main(String[] args) { int[] arr = {4,3,5,6,9,10,12}; reorderOddEv原创 2016-03-06 11:15:23 · 613 阅读 · 0 评论 -
包含min函数的栈Java
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min, push, 及pop的时间复杂度都是O(1)。思路:使用两个栈,当向栈中添加元素时,与辅助栈中元素比较,如果小,向辅助栈中添加该元素,向辅助栈中再次添加辅助栈栈顶元素。package offer;import java.util.Stack;public class MinStac原创 2016-03-08 10:07:25 · 779 阅读 · 0 评论 -
字符串的全排列
字符串的全排列设计一个算法,输出一个字符串字符的全排列。比如,String = "abc"输出是"abc","bac","cab","bca","cba","acb"算法思想从集合依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理转载 2016-03-08 22:27:54 · 338 阅读 · 0 评论 -
第一个只出现一次的字符
题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'。思路:使用哈希表,定义哈希表的键值(Key)是字符,而值(Value)是该字符出现的次数。同时我们还需要从头开始扫描字符串两次。第一次扫描字符串时,每扫描到一个字符就在哈希表的对应项中把次数加1。接下来第二次扫描,每扫描到一个字符就能从哈希表中得到该字符出现的次数。这样第一个只出现一次的字符就是符合要求的。原创 2016-03-09 17:25:22 · 351 阅读 · 0 评论 -
快速排序
快速排序原创 2016-02-27 10:04:46 · 350 阅读 · 0 评论 -
统计数字在排序数组中出现的次数
题目:统计一个数字在排序数组中出现的次数。例如输入输入排序数组{1,2,3,3,4,5}和数字3,输出2.思路:使用二分查找法,时间复杂度O(logN)package offer;/** * 统计一个数字在排序数组中出现的次数。 * 二分查找法,时间复杂度O(logN) * @author zhangqd * */public class GetNumberOfK { p原创 2016-03-12 20:13:01 · 2226 阅读 · 0 评论 -
不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+,-,* , /四则运算符号。public static int sum(int num1, int num2){ int sum =0,carry=0 ; do{ sum = num1 ^ num2; carry = (num1&num2)<<1; num1 = sum; num2 = carry;原创 2016-03-13 21:01:31 · 349 阅读 · 0 评论 -
带备忘的斐波那契算法
带备忘的斐波那契算法原创 2016-03-26 12:03:18 · 456 阅读 · 0 评论 -
二分法变种
二分法变种转载 2016-05-06 18:11:07 · 645 阅读 · 0 评论 -
最长回文子串
最长回文子串转载 2016-07-03 15:37:10 · 383 阅读 · 0 评论 -
贪心算法最少硬币数
package com.web;import java.util.Scanner;/** * Created by. */public class Permutation { public static void main(String[] args) { Scanner input = new Scanner(System.in); int原创 2016-12-15 22:05:27 · 3091 阅读 · 0 评论 -
字典序最小问题
字典序最小问题 Java原创 2016-12-17 21:52:52 · 2000 阅读 · 0 评论 -
打印1到最大的n位数 Java
打印1到最大的n位数 Java, 大数BigInteger原创 2016-03-05 22:36:32 · 1316 阅读 · 0 评论 -
位运算:二进制中1的个数
题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此输出2.原创 2016-03-05 16:32:37 · 1842 阅读 · 0 评论 -
输出一个数n的全排列
题目:输入一个数n, 输出1~n的全排列。package smart;public class Test { public static void main(String[] args) { dfs(4); } /* * 打印1~n的全排列 */ public static void dfs(int n){ int[] arr = new int[n]; in原创 2016-03-17 12:06:25 · 6228 阅读 · 0 评论 -
桶排序的简易形式
public class Chapter12 { public static void main(String[] args) { int[] arr = {5,3,2,6}; bucketSort(arr); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } } /** *原创 2015-10-16 23:09:44 · 400 阅读 · 0 评论 -
图的深度遍历和广度遍历
图的深度优先遍历和广度优先遍历原创 2015-10-14 21:50:53 · 1490 阅读 · 0 评论 -
判断二叉树是否为平衡二叉树
本文来源于:http://blog.chinaunix.net/uid-20330058-id-1965441.html如何判断一棵二叉树是否是平衡二叉树问题:判断一个二叉排序树是否是平衡二叉树解决方案:根据平衡二叉树的定义,如果任意节点的左右子树的深度相差不超过1,那这棵树就是平衡二叉树。首先编写一个计算二叉树深度的函数,利用递归实现。templatestat原创 2015-10-10 14:51:18 · 463 阅读 · 0 评论 -
【转】并查集算法和路径压缩
本文来自于:http://www.cnblogs.com/TonyNeal/p/bingchaji.html 特此感谢并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个转载 2015-10-09 19:50:24 · 493 阅读 · 0 评论 -
栈和堆的生长方向
C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。C++内存区域分为5个区域。分别是堆,栈,自由存储区,全局/静态存储区和常量存储区。栈:由编译器在需要的时候分配,在不需要的时候自动清除的变量存储区。里面通常是局部变量,函数参数等。堆:由n转载 2015-10-23 23:32:38 · 13734 阅读 · 1 评论 -
二维数组中的查找
二维数组中的查找原创 2016-03-01 19:05:46 · 353 阅读 · 0 评论 -
判断一个单链表是否有环及环的连接点问题
给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少?解:1)设置两个指针slow和fast, slow每次走一步, fast每次走两步。如果存在环的话, fast 肯定能追上slow。如果不存在环,当fast为Null时退出。所以当slow等于fast时,说原创 2016-03-01 20:47:08 · 561 阅读 · 0 评论 -
求子数组和的最大值
3.求子数组的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。ANSWER: A traditiona原创 2016-03-02 17:59:47 · 1106 阅读 · 0 评论 -
从尾到头打印链表(java)
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。通常打印是一个只读操作,我们不希望打印时修改内容。接下来我们想到解决这个问题肯定要遍历链表。遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头。也就是说第一个遍历到的结点最后一个输出,而最后一个遍历到的结点第一个输出。这就是典型的“ 后进先出”,可以用栈实现这种顺序。每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表原创 2016-03-03 10:17:01 · 2686 阅读 · 0 评论 -
旋转数组中的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。可以使用二分查找法,时间复杂度O(logN)。package offer;public class MinNumInRotatedArray { public sta原创 2016-03-05 10:19:15 · 358 阅读 · 0 评论 -
青蛙跳台阶
题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法首先考虑的是最简单的情况(分析问题,由简单到复杂)。如果只有1阶台阶,那只有一种跳法。如果有2级台阶,有两种跳法:一种是一次跳1阶,另一种是一次跳2阶。 更一般的情况。把n级台阶时的跳法看成是n的函数,f(n)。当n>2 时, 第一次跳的时候有两种不同的选择: 一是第一次只跳1级,此时跳法数目等原创 2016-03-05 10:57:29 · 408 阅读 · 0 评论 -
进制。把十进制数字用A-Z表示成二十六进制
题目:在Excel中, 用A表示第1列, B表示第2列......, Z表示第26列,AA表示第27列,AB表示第28列..., 以此类推。请写出一个函数,输入用字母表示的列号编码,输出他是第几列。把十进制数字用A-Z表示成二十六进制package offer;public class WordColumns { public static void main(String[]原创 2016-03-05 12:50:43 · 2207 阅读 · 0 评论 -
最长公共子序列问题
最长公共子序列, 动态规划原创 2016-12-18 22:40:43 · 453 阅读 · 0 评论