算法
tkzc_csk
这个作者很懒,什么都没留下…
展开
-
变态青蛙跳台阶
青蛙跳题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解法public class Solution { int res = 0; public int JumpFloor(int target) { int count = 0; helper(count, target);原创 2018-04-07 23:16:45 · 173 阅读 · 0 评论 -
二进制中1的个数
二进制中1的个数题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解法1经查阅 java 自带库中已有实现public class Solution { public int NumberOf1(int n) { return Integer.bitCount(n); }}Integer 类中 bit...原创 2018-04-08 10:54:28 · 134 阅读 · 0 评论 -
剑指offer -- 不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解法public class Solution { public int Add(int num1,int num2) { int row_sum = 0; // 不含进位的和 int carry = 0; // 进位 while(num2 != 0){原创 2018-04-08 13:40:58 · 133 阅读 · 0 评论 -
字典序算法
算法题目给定一个正整数,实现一个方法来求出离该整数最近的大于自身的“换位数”。 换位数:把一个整数各个数位的数字进行全排列,从而得到新的整数,例如 54321 和 12345.如: 输入 12345, 返回 12354 输入 12354, 返回 12435 输入 12435, 返回 12453 ……思路分析比如给定整数 12354, 如何找到离它最近且大于它的换位数呢?为了和原数接近,原创 2018-04-09 20:40:08 · 155 阅读 · 0 评论 -
最长公共子序列LCS
最长公共子序列LCS 一些基本概念以及LCS算法核心思想摘录自别人的博客,在此申明。(没必要做不必要的重复劳动,这篇博客和我看的一本书中的内容很相似,后面的代码改编自原书中的实现,书中)1. LCS相关基本概念1)子序列: 一个序列A = a1,a2,……an,中任意删除若干项,剩余的序列叫做A的一个子序列。也可以认为是从序列A按原顺序保留任意若干项得到的序列。例如:...转载 2018-04-10 17:13:37 · 510 阅读 · 0 评论 -
删除链表中的重复节点
删除链表中的重复节点原创 2018-04-16 14:00:29 · 272 阅读 · 0 评论 -
顺时针打印矩阵
题目顺时针打印矩阵 [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] You should return [1,2,3,6,9,8,7,4,5].解法1public List<Integer> spiralOrder(int[][] matrix) { List<...原创 2018-04-17 19:52:18 · 120 阅读 · 0 评论 -
如何删除才能使得回文串最长
题目给定一个字符串s,从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。 输入例子: abcda google 输出例子: 2 2解题思路先求字符串s的反转串rs,然后求s和rs的最大公共子序列(子序列和子串的区别是子序列不要求连续,子串要求连续),则最大公共子序列的长度即为最大回文串的长度。(...原创 2018-04-12 14:16:53 · 339 阅读 · 0 评论 -
链表中倒数第k个节点
题目描述输入一个链表,输出该链表中倒数第k个结点。代码实现(Java)/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode原创 2018-04-18 10:38:02 · 93 阅读 · 0 评论 -
n皇后问题
题目描述The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutions to the n-queens puzzle....原创 2018-04-23 08:48:07 · 138 阅读 · 0 评论 -
连续子数组中的最大和
题目描述Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4], the contiguous subarray [4,-1,2,1...原创 2018-05-08 22:09:56 · 121 阅读 · 0 评论 -
求数组中第k大的数
文章装载自:https://blog.csdn.net/liang0000zai/article/details/46637289使用快排,第一趟快排过后,右边的元素都比枢轴大,左边的都比枢轴小。当我们要求第K大的数,只需要左边的元素个数是len-k,len是数组总长度。第一次快排下来,设枢轴位置是mid,如果mid>k,说明第k大元素应该在左边序列中,递归左边序列。当 mi...转载 2018-04-24 15:45:03 · 444 阅读 · 0 评论 -
无序整数数组中找第k大的数
经典问题:写一段程序,找出数组中第k大的数,输出数所在的位置。 【解法一】先排序,然后输出第k个位置上的数 我们先假设元素的数量不大,例如在几千个左右,在这种情况下,那我们就排序一下吧。在这里,快速排序或堆排序都是不错的选择,他们的平均时间复杂度 都是 O(N * logN)。然后取出前 K 个,O(K)。总时间复杂度 O(N * logN)+ O(K) = O(N * logN)。你一定注意到转载 2018-04-24 16:23:28 · 565 阅读 · 0 评论 -
无序整数数组中找第k大的数
注:原博地址:https://blog.csdn.net/wangbaochu/article/details/52949443经典问题:写一段程序,找出数组中第k大的数,输出数所在的位置。【解法一】先排序,然后输出第k个位置上的数我们先假设元素的数量不大,例如在几千个左右,在这种情况下,那我们就排序一下吧。在这里,快速排序或堆排序都是不错的选择,他们的平均时间复杂度 都是...转载 2018-04-24 20:12:44 · 788 阅读 · 1 评论 -
剑指offer -- 找出数组中出现次数超过数组长度一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。实现代码(Java)import java.util.*;public class Solution { public int MoreThanHalfNum_Solutio原创 2018-04-25 12:14:52 · 221 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
注:博文转载自:https://blog.csdn.net/tanjie_123/article/details/53055723一、问题描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。二、算法分析给定一个数组array目标:调整数组中元素顺序,使得奇数在前,偶数在后,同转载 2018-04-25 17:50:20 · 212 阅读 · 0 评论 -
第n个丑数
题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路2的倍数:1 * 2, 2 * 2, 3 * 2, 4 * 2,… 3的倍数:1 * 3, 2 * 3, 3 * 3, 4 * 3,… 5的倍数:1 * 5, 2 * 5, 3 * 5, 4...原创 2018-05-11 09:36:43 · 217 阅读 · 0 评论 -
一个数组是否为二叉搜索树的后序遍历
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。。分析二叉搜索树:对二叉搜索树任意节点而言,左子树的值都小于该节点的值,右子树的值都大于该节点的值。 二叉树的遍历: ...原创 2018-05-17 20:50:11 · 249 阅读 · 0 评论 -
反转链表
/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) { ...原创 2018-05-05 20:12:33 · 77 阅读 · 0 评论 -
数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 因为测试数据的结果会特别大,所以需要取余示例1输入 1,2,3,4,5,6,7,0 输出 7思路分治的思想(归并排序):把数据递归划分成前后两个数组(直...原创 2018-05-13 09:58:10 · 112 阅读 · 0 评论 -
字符串的全排列
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。代码实现(Java)import java.util.ArrayList;import java.util.TreeSet;public class Solution { public Ar...原创 2018-05-07 09:46:43 · 90 阅读 · 0 评论 -
合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。代码实现(Java)/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public ...原创 2018-05-07 16:45:27 · 88 阅读 · 0 评论 -
求1+2+3+...+n
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。代码实现(Java)//1. 调用库函数 public int Sum_Solutio1n1(int n) { return (int) ((n + Math.pow(n, 2))) &amp;gt;&amp;gt; 2; ...原创 2018-05-14 19:43:34 · 233 阅读 · 0 评论 -
两个链表的第一个公共结点
题目描述输入两个链表,找出它们的第一个公共结点代码实现1(Java) public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { if(pHead1 == null || pHead2 == null) return null; int len1 = 0; ...原创 2018-05-14 21:19:17 · 88 阅读 · 0 评论 -
矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?题目分析如果用一行小矩阵填充大矩阵,那么该小矩阵下面对应列也应该用小矩阵。 所以,该题目等同于青蛙跳台阶的问题,一次可以走一步或者两步。代码实现(Java) public int RectCover(int target) { ...原创 2018-05-21 16:33:14 · 126 阅读 · 0 评论 -
孩子们的游戏
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数….这样下去….直到剩下...原创 2018-05-08 15:52:35 · 1173 阅读 · 0 评论 -
给定二叉树的前序和中序,重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。代码实现(Java)/** * Definition for binary tree * public class TreeNode {...原创 2018-05-22 11:04:16 · 341 阅读 · 0 评论 -
数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。代码实现(Java) public double Power(double base, int exponent) { double res = 1; if(exponent == 0) return 1; if(expo...原创 2018-05-22 19:58:14 · 95 阅读 · 0 评论 -
树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)代码实现(Java) 一般情况下有关树的算法题考虑用递归。因为树的定义就是递归的。class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null...原创 2018-05-23 11:00:37 · 135 阅读 · 0 评论 -
LeetCode 47. Permutations II(有重复数字的全排列)
解题思路参考自:https://blog.csdn.net/jacky_chenjp/article/details/66477538 问题描述 Given a collection of numbers that might contain duplicates, return all possible unique permutations.Example:Input: [1,1,...转载 2018-08-14 23:02:17 · 273 阅读 · 0 评论 -
LeetCode 31. Next Permutation
问题描述:Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest pos...原创 2018-08-12 23:33:43 · 99 阅读 · 0 评论 -
LeetCode 60. Permutation Sequence
参考:https://blog.csdn.net/jacky_chenjp/article/details/66477538 问题描述 The set [1,2,3,…,n] contains a total of n! unique permutations.By listing and labeling all of the permutations in order, we get ...转载 2018-08-15 20:23:28 · 95 阅读 · 0 评论 -
算法---世界杯开幕式球队个数以及最大球队群体人数
题目描述 示例 AC代码import java.util.Scanner;public class Wangyi_shijiebei { public static int row, col; public static int ans = 0; public static int maxArr = 0; public static int ...原创 2018-08-13 12:49:06 · 640 阅读 · 0 评论 -
LeetCode 46. Permutations
题目及解法均来自于 LeetCode问题描述 Given a collection of distinct integers, return all possible permutations.Example:Input: [1,2,3]Output:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], ...原创 2018-08-13 22:03:34 · 93 阅读 · 0 评论 -
(转)合唱团(2016网易编程题)
参考:https://blog.csdn.net/hui1140621618/article/details/65437387 https://blog.csdn.net/lengxiao1993/article/details/52305420题目:有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学...转载 2018-08-16 20:06:12 · 193 阅读 · 0 评论 -
[转]合唱队&动态规划
转载自:https://blog.csdn.net/haoxiaodao/article/details/48103387题目描述题目 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK, 则他们的身高满足...转载 2018-08-19 16:08:32 · 758 阅读 · 0 评论 -
LeetCode 78. Subsets
题目描述Given a set of distinct integers, nums, return all possible subsets (the power set).Note: The solution set must not contain duplicate subsets.Example:Input: nums = [1,2,3] Output: [ [...原创 2018-08-27 20:56:31 · 97 阅读 · 0 评论 -
LeetCode 90. Subsets II
题目描述Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).Note: The solution set must not contain duplicate subsets.Example:Input: [1,...原创 2018-08-27 23:43:51 · 106 阅读 · 0 评论 -
回溯法和DFS(深度优先搜索)的关系
最近写算法题,经常用到回溯法和深度优先算法,总感觉它们的思路其实是差不多的。 回溯法是求问题的解,使用的是DFS(深度优先搜索)。在DFS的过程中发现不是问题的解,那么就开始回溯到上一层或者上一个节点。DFS是遍历整个搜索空间,而不管是否是问题的解。所以更觉得回溯法是DFS的一种应用,DFS更像是一种工具。...原创 2018-08-28 09:33:06 · 11745 阅读 · 3 评论 -
迷宫问题--回溯法
转载自:https://blog.csdn.net/James_T_Kirk/article/details/76895209题目描述有N*M的迷宫,共有T处障碍,给定起点坐标和终点坐标,每个方格最多经过1次,问有多少种从起点坐标到终点坐标的方案。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。输入格式 第一行N、M和T,N为行,M为列,T为障碍总数。第...转载 2018-08-28 10:14:07 · 481 阅读 · 0 评论