Java数据结构&算法
振哥在,世界充满爱!
计划+坚持!+思考
展开
-
大学生计算机相关专业学生算法刷题平台、算法竞赛训练平台
OJ系统:作为算法刷题的平台,训练过程中,要有训练计划,坚持刷题,不断反思总结的过程。OJ:Online Judge系统的简称,用来在线检测程序源代码的正确性。 ACM:ACM国际大学生程序设计竞赛(ACM International Collegiate ProgrammingContest(ACM-ICPC或ICPC),是最具影响力的大学生计算机竞赛。 蓝桥杯比赛:蓝桥杯全国软件和信息技术专业人才大赛http://lx.lanqiao.cn/主要刷题平台: (1)浙江大学htt...原创 2021-03-11 10:58:04 · 1493 阅读 · 0 评论 -
华为-最高分是多少-Java
思路可能比较简单,但是处理起来还是有许多细节要注意的。import java.util.Scanner;/** * 题目描述 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. * 输入描述: * 输入包括多组测试数据。 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表原创 2017-07-01 22:51:49 · 1407 阅读 · 0 评论 -
2016百度-钓鱼比赛-Java
package Q2106校招汇总;import java.util.Scanner;/** * 题目描述:ss请cc来家里钓鱼,鱼塘可划分为n*m的格子,每个格子有不同的概率钓上鱼,cc一直在坐标(x,y)的格子钓鱼,而ss每分钟随机钓一个格子。问t分钟后他们谁至少钓到一条鱼的概率大?为多少? * 输入描述:第一行五个整数n,m,x,y,t(1≤n,m,t≤1000,1≤x≤n,1原创 2017-06-10 15:20:27 · 522 阅读 · 0 评论 -
2016百度-裁减网格纸-Java
package Q2106校招汇总;import java.util.Scanner;/** * 题目描述:度度熊有一张网格纸,但是纸上有一些点过的点,每个点都在网格点上,若把网格看成一个坐标轴平行于网格线的坐标系的话,每个点可以用一对整数x,y来表示。度度熊必须沿着网格线画一个正方形,使所有点在正方形的内部或者边界。然后把这个正方形剪下来。问剪掉正方形的最小面积是多少。 * 输入描原创 2017-06-10 12:01:52 · 339 阅读 · 0 评论 -
2016百度-罪犯转移-Java
package Q2106校招汇总;import java.util.Scanner;/** * 题目描述:C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行值之和不超过t,问有多少种选择的方式? * 输入描述:第一行数据三个整数:n,t,c(1≤n≤原创 2017-06-10 11:40:55 · 325 阅读 · 0 评论 -
膨胀的牛牛-Java-牛客模拟四
package 模拟四;import java.util.Scanner;/** * 题目描述:牛牛以草料为食。牛牛有一天依次遇到n堆被施展了魔法的草料,牛牛只要遇到一堆跟他当前相同大小的草料,它就会把草料吃完,而使自己的大小膨胀一倍。一开始牛牛的大小的是A,然后给出牛牛依次遇到的n堆草料的大小。请计算牛牛最后的大小。 * 输入描述: 输入包括两行,第一行包含两个整数n和A(1 ≤ n原创 2017-06-21 22:57:48 · 465 阅读 · 0 评论 -
黑化的牛牛-Java-牛客模拟四
package 模拟四;import java.util.Scanner;/** * 题目描述:牛牛变得黑化了,想要摧毁掉地球。但他忘记了开启地球毁灭器的密码。牛牛手里有一个字符串S,牛牛还记得从S中去掉一个字符就恰好是正确的密码,请你帮牛牛求出他最多需要尝试多少次密码。 * 如样例所示S = "ABA",3个可能的密码是"BA", "AA", "AB". 当S = "A", 牛牛唯一原创 2017-06-21 22:56:59 · 674 阅读 · 0 评论 -
黑白卡片-Java-牛客模拟四
package 模拟四;import java.util.Scanner;/** * 题目描述:牛牛有n张卡片排成一个序列.每张卡片一面是黑色的,另一面是白色的。初始状态的时候有些卡片是黑色朝上,有些卡片是白色朝上。牛牛现在想要把一些卡片翻过来,得到一种交替排列的形式,即每对相邻卡片的颜色都是不一样的。牛牛想知道最少需要翻转多少张卡片可以变成交替排列的形式。 * 输入描述: 输入包括一原创 2017-06-21 22:55:48 · 776 阅读 · 0 评论 -
2016小米-风口的猪-中国牛市-Java
解题思路:可能是我的理解力有限,但总感觉题目描述的理解起来费劲。题目抽象一下,就是给定一个数组,按照某种规则找出这个数组的最大值。规则:最多取两个数,然后丢到一个数,看看手中的数的最大值。卖出为+,买入为-。利用动态规划来考虑:从数组的左侧到右侧遍历,计算最大值保存成数组,同理从右侧到左侧,计算最大值保存成数组。找两个数组对应值得和,找出最大值。1、从左到右扫描一遍,dpl[i]表示到原创 2017-07-01 08:48:00 · 488 阅读 · 0 评论 -
2016小米-懂二进制-Java
/** * 题目描述 世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? * 示例1 输入 * 1999 2299 * 输出 * 7 * * @author 崔洪振367 * @version 创建时间:2017年6月30日 下午10:34:53 * 解题思路:将两个数逐位相与,如果不等,则计数器加1.原创 2017-06-30 22:55:58 · 404 阅读 · 0 评论 -
2016小米-小米Git-Java
说明:当时看到这道题目的时候,直接就有点MB了,后来仔细研究看了一些关于此题的一些说明,在加上使用过git,可能就熟悉了题目的要求。本质上就是在一个多叉树(git结构)找到两个子节点的最近公共父节点(就是合并git时找两个分支的最近的分割点)。解题思路:1、将字符串数组转换为字符数组;2、遍历字符找到每个节点的父节点,记录每个节点的深度;3、根据两个给定的索引值,遍历找到他们最近的原创 2017-06-30 22:25:03 · 474 阅读 · 0 评论 -
牛客网-剑指offer
该部分主要是对递归的一个应用,同样也可以作为动态规划的基础题目去思考。1、跳台阶/** * * @author 崔洪振367 * @version 创建时间:2017年6月28日 下午9:24:40 */public class 跳台阶 { public int JumpFloor(int target) { if(target == 1){ return 1;原创 2017-06-29 17:09:50 · 507 阅读 · 0 评论 -
牛客网-剑指offer
1、重建二叉树import java.util.Arrays;/** * * @author 崔洪振367 * @version 创建时间:2017年6月28日 下午8:21:21 */public class 重建二叉树 { public TreeNode reConstructBinaryTree(int[] pre, int[] in) { if(pre ==原创 2017-06-29 16:54:19 · 391 阅读 · 0 评论 -
人人网2017实习笔试-除夕夜
说明:没有测试环境,不知道该题通过率是多少,但测试样例已通过,感觉逻辑上应该没问题。需要进一步验证。package 人人网;import java.util.Scanner;/** * 问题:小明在参加跨年之前最大能解决多少问题。 * 输入:每个样例输入两行,每行一个整数,n和m(1<=n<=10,1<=m<=240) * 输出:小明最多能解决的问题数。 * 样例输入:原创 2017-05-08 21:11:00 · 390 阅读 · 0 评论 -
爬行的蚂蚁-Java-2017百度秋招
package 百度;import java.util.Scanner;/** * 题目描述: * 有些蚂蚁在一条水平线上爬行,每只蚂蚁的速率都是1cm/s。蚂蚁爬到水平线的任何一个端点时会立刻掉下来,当两只蚂蚁碰到一起时他们都会立刻调头向相反方向移动。 * 已知蚂蚁们在水平线上的初始位置,但不幸的是,它们初始的运动方向是不知道的。请计算所有蚂蚁从水平线上掉下来可能所需的最早和最晚原创 2017-05-27 15:20:39 · 1025 阅读 · 1 评论 -
华为-简单错误记录-Java
自己没做出来,看的一个老哥的笔记,绝对得记下来。思路一般,但是实现上绝对有技巧值得学习。import java.util.Collections;import java.util.Comparator;import java.util.LinkedHashMap;import java.util.LinkedList;import java.util.List;import java转载 2017-07-01 23:03:21 · 987 阅读 · 0 评论 -
去哪儿-二分查找-Java
夯实基础知识是很重要的。基本的二分查找的考察。/** * 题目描述 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 * 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。 * 若该元素出现多次,请返回第一次出现的位置。 * 测试样例: [1,3,5,7,9]原创 2017-07-02 09:17:08 · 332 阅读 · 0 评论 -
去哪儿-首个重复字符-Java
import java.util.*;/** * 题目描述 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 * 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。 * 测试样例: * "qywyer23tdd",11 * 返回:y * * @author 崔洪振367 * @ve原创 2017-07-02 09:25:04 · 332 阅读 · 0 评论 -
2018远景能源笔试
一、根据输入的的序列判断是插入排序还是堆排序,然后输出对应的序列。package 面试算法题;/** * According to Wikipedia:Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteratio原创 2017-08-30 19:20:40 · 3735 阅读 · 5 评论 -
贪心算法-分治算法-动态规划-回溯-分支限界的简单介绍
1.1 贪心算法在求解过程中,总是做出在当前看来最好的选择,有可能陷入局部最优。1.2 分治算法将一个难以解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。1.3动态规划将待求解的问题分解为若干子问题(阶段),按顺序求解子阶段,前一个子问题的解,为后一个子问题的求解提供了必要的信息。与分治算法的主要区别是:经分解后得到的子问题往往不是相互独立的。1.4原创 2017-09-23 16:03:52 · 566 阅读 · 0 评论 -
Java-剑指offer-正方体的三面和相等
输入一个含有8个数字的数组,判断有没有可能把这8个数字分别放到正方体的8个顶点上,使得正方体上三组相对的面上的4个顶点的和都相等。/** * 题目描述:输入一个含有8个数字的数组,判断有没有可能把这8个数字分别放到正方体的8个顶点上,使得 * 正方体上三组相对的面上的4个顶点的和都相等。 * @author 崔洪振367 * @version 创建时间:2017年8月27日 上午原创 2017-08-27 11:47:29 · 780 阅读 · 0 评论 -
AtOffer笔记-二叉树的镜像&顺时针打印矩阵&包含min函数的栈
1、二叉树的镜像package 剑指offer;/** * 题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。 * @author 崔洪振367 * @version 创建时间:2017年7月20日 下午10:16:55 */public class 二叉树的镜像 { public void Mirror(TreeNode root){ if(root == nul原创 2017-07-20 23:51:02 · 389 阅读 · 0 评论 -
美团-平均年龄-Java
import java.util.Scanner;/** * 题目描述 * 已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x<1,每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。 * 从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(最后结果向上取整)。 * 输入描述: 输入W Y x N原创 2017-07-08 01:05:53 · 827 阅读 · 0 评论 -
美团-字符串计数-Java
import java.util.Scanner;/** * 题目描述 求字典序在s1和s2之间的,长度在len1到len2的字符串的个数,结果mod 1000007。 输入描述: * 每组数据包涵s1(长度小于100),s2(长度小于100),len1(小于100000),len2(大于len1,小于100000) 输出描述: * 输出答案。 * 示例1 输入: ab ce 1 2原创 2017-07-07 21:43:31 · 696 阅读 · 0 评论 -
美团-直方图内最大矩形-Java
import org.junit.Test;/** * 题目描述 * 有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。 * 比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。 * 给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。 * 测原创 2017-07-07 21:29:35 · 651 阅读 · 0 评论 -
美团-拜访-Java
/** * 题目描述 * 现在有一个城市销售经理,需要从公司出发,去拜访市内的商家,已知他的位置以及商家的位置,但是由于城市道路交通的原因,他只能在左右中选择一个方向,在上下中选择一个方向,现在问他有多少种方案到达商家地址。 * 给定一个地图map及它的长宽n和m,其中1代表经理位置,2代表商家位置,-1代表不能经过的地区,0代表可以经过的地区,请返回方案数,保证一定存在合法路径。保证矩阵的原创 2017-07-07 21:11:43 · 592 阅读 · 0 评论 -
美团-棋子翻转-Java
import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import org.junit.Test;/** * 题目描述 在4x4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4), * 现在原创 2017-07-07 21:10:26 · 680 阅读 · 0 评论 -
美团-最大差值-Java
import org.junit.Test;/** * 题目描述:有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值。 * 测试样例: [10,5],2 * 返回:0 * * @author 崔洪振367 * @version 创建时间:2017年7月7日 下午12:19:44 * 解题思路:从后向前和前边的最小数原创 2017-07-07 21:07:52 · 607 阅读 · 0 评论 -
Java动态规划学习汇总
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能转载 2017-07-05 21:44:33 · 1663 阅读 · 0 评论 -
AtOffer笔记
一、反转链表二、合并两个排序的链表三、树的子结构/** * 题目描述:输入一个链表,反转链表后,输出链表的所有元素。 * @author 崔洪振367 * @version 创建时间:2017年7月12日 下午8:34:30 */public class 反转链表 { public ListNode ReverseList(ListNode head){ ListN原创 2017-07-14 17:07:23 · 367 阅读 · 0 评论 -
去哪儿-寻找Coder-Java
题目描述请设计一个高效算法,再给定的字符串数组中,找到包含"Coder"的字符串(不区分大小写),并将其作为一个新的数组返回。结果字符串的顺序按照"Coder"出现的次数递减排列,若两个串中"Coder"出现的次数相同,则保持他们在原数组中的位置关系。给定一个字符串数组A和它的大小n,请返回结果数组。保证原数组大小小于等于300,其中每个串的长度小于等于200。同时保证一定存在原创 2017-07-02 11:51:15 · 486 阅读 · 0 评论 -
比赛组队-Java-2017百度秋招
package 百度;import java.util.Scanner;/** * 题目描述: 为活跃公司文化,公司计划组织一场比赛,让员工一展才艺。现有n个员工,欲选出不少于k人组成一支队伍,1<=n< =12,1<=k<=n。 * 每个员工有个value值,表示其对队伍水平的贡献,-1000<=value<=1000,给出一个矩阵对角线为0的对称矩阵A, * A[i][j]表示i原创 2017-05-27 15:17:16 · 1383 阅读 · 0 评论 -
人人网2017实习笔试-求和A
package 人人网;import java.util.Scanner;/** * 题目大意:给定带有方格的纸条,随便写入数字,将纸条分割成两部分,判断两部分的和相等的情况有多少种。 * 样例输入: * 3 * 1 1 1 * 9 * 1 5 -6 7 9 -16 0 -2 2 * 2 * 0 0 * 样例输出: * 0 * 3 * 1 * 解题思路:1)先判断原创 2017-05-08 21:02:32 · 245 阅读 · 0 评论 -
人人网2017实习笔试-水仙花数
package 人人网;import java.util.Scanner;/** * 题目描述:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3;现在要去输出所有在m和n范围内的水仙花数。 * 输入:输入数据多组,每组占一行,包括两个整数m和n(100<=m<=n<=999) * 输出:对于每个测试实例,要求输出所有在给定范围内的水仙原创 2017-05-08 20:49:46 · 359 阅读 · 0 评论 -
百度2017秋招-颜色反转
题目大意:给出颜色的RGB,然后将对应的数字转换为16个数的相对应的数字。比如0-F,1-E,F-0,E-1等。package 百度;import java.util.List;import java.util.ArrayList;import java.util.Scanner;/** * @题目要求:例 如 #0000FF 表示蓝色,#FF7F50 表示珊瑚红。在这道题中,我原创 2017-05-07 10:39:54 · 466 阅读 · 0 评论 -
异或今日头条笔试
题目描述:给定整数m以及n个数字A1, A2, …, An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果。 请求出这些结果中大于m的有多少个。 输入:第一行包含两个整数n, m。 第二行给出n个整数A1, A2, …, An。 样例输入:3 10 6 5 10 输出:输出仅包括一行,即所求的答案。 样例输出:2 解题思路原创 2017-04-01 21:16:21 · 3982 阅读 · 1 评论 -
TrieTree字典树
Trie树,又称为单词查找树,字典树,键树。是哈希树的变种。 应用与统计和排序大量字符串,所以经常用于搜索引擎系统用于文本词频系统。 优点:最大限度的减少无谓的字符串的比较,查找效率比哈希表高。 基本性质: 1)根节点不包含字符,除根外每个节点只包含一个字符。 2)从根节点到某一节点,路径上经过的字符连起来,为该结点对应的字符串。 3)每个结点包含的所有子结点都不相同。原创 2017-04-01 20:59:21 · 458 阅读 · 0 评论 -
统计某个整数的二进制形式中1的个数
给出一个整数,求出它的二进制形式中1的个数。通常情况下我们可以采用多种方法来求解。方法一:将整数转换为二进制形式,然后,遍历二进制数字,找出其中1的个数。 int count = 0; int x = 2015; String binStr = Integer.toBinaryString(x); for(int i=0; i<binStr.length(); i++){原创 2017-04-11 16:06:37 · 610 阅读 · 0 评论 -
京东实习笔试——通过考试
题目描述:小明同学要参加一场考试,考试一共有n道题目,小明必须做对至少60%的题目才能通过考试。考试结束后,小明估算出每题做对的概率,p1,p2,...,pn。你能帮他算出他通过考试的概率吗?输入:第一行一个数n(1 第二行n个整数,p1,p2,...,pn。表示小明有pi%的概率做对第i题。(0样例输入:450 50 50 50输出:小明通过考试的概率原创 2017-04-11 15:30:22 · 1399 阅读 · 0 评论 -
京东实习笔试——拍卖
解题思路:所有客户都会给出一个价格,但是我们要找出其中一个价格使得总的利润最大。即确定一个值,以该值为价格进行拍卖,所有大于该值的客户均能以该价格进行购买。即总的利润为拍卖的价格和大于该价格的所有客户人数的乘积。package 京东;import java.util.Scanner;/** * 题目描述 公司最近新研发了一种产品,共生产了n件。有m个客户想购买此产品,第i个客户出价V原创 2017-04-09 11:35:16 · 801 阅读 · 0 评论