自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 JZ47 --- 求1+2+3+...+n

题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。题解:题目为等差数列的和,即 sum =(a1 + an)n/2代入题目,sum =(1 + n)n/2即sum = (n + n^2) / 2我们知道除于二就等于右移一位。public int Sum_Solution(int n) { int res =(int)( n + Math.pow (n,2)); return res

2020-08-24 21:52:23 127

原创 测试用例 --- 表情包收藏

2020-08-24 20:14:57 1317

原创 测试用例 --- 登陆界面测试

2020-08-24 20:12:15 566

原创 测试用例 --- 注册163邮箱密码

2020-08-24 20:11:21 2584

原创 JZ46 --- 孩子们的游戏(圆圈中最后剩下的数)

题目描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦 !! ^ _ ^ )。请你试

2020-08-24 17:54:41 174

原创 JZ45 --- 扑克牌顺子

题目描述:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。

2020-08-24 10:10:20 878

原创 JZ44 --- 翻转单词顺序列

题目描述:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?题解:(1)字符串整体翻转。(2)逐个单词翻转。public class Solution { public Stri

2020-08-23 22:48:57 142

原创 JZ43 --- 左旋转字符串

题目描述:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!题解:(1)当字符串为空时,直接输出空字符串。(2)旋转长度可能大于字符串长度,此时只需旋转 n %= len。(3)使用str.substring (n),其中 n 为截取字符串的始下标。(4)使

2020-08-23 21:48:04 207

原创 JZ42 --- 和为S的两个数

题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。题解:因为数组是有序的,让一个指针指向数组头,一个指向数组尾,最外层的乘积就说最小的。import java.util.ArrayList;public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { A

2020-08-23 21:13:36 128

原创 leetcode46 --- 全排列

题目:给定一个没有重复 数字的序列,返回其所有可能的全排列。示例:题解:以下文字内容全部来组leetcode题解区:https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liweiw/「回溯」算法(深度优先遍历 + 状态重置 + 剪枝)首先介绍“回溯”算法的应用。“回溯”算法也叫“回溯搜索”算法,主要用于在一个庞大的空间里搜索我们所需要的问题

2020-08-21 22:37:35 210

原创 SQL --- 视图

概念视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。为什么使用视图?重用SQL语句。简化复杂的SQL操作。在编写查询后,可以方便的重用它而不必知道其基本查询细节。使用表的一部分而不是整个表。保护数据。可以授予用户访问表的特定部分的权限,而不是整个表的访问权限。更改数据格式和表示。视图可返回与底层表的表示和格式

2020-08-20 10:53:50 105

原创 SQL1~10

员工信息表CREATE TABLE employees (emp_no int(11) NOT NULL, – ‘员工编号’birth_date date NOT NULL,first_name varchar(14) NOT NULL,last_name varchar(16) NOT NULL,gender char(1) NOT NULL,hire_date date NOT NULL,PRIMARY KEY (emp_no));工资表CREATE TABLE salarie.

2020-08-18 22:27:55 368

原创 JZ41 --- 和为S的连续正数序列

题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序题解:类滑动窗口,但是此题中滑动窗口大小可随意变动。publ

2020-08-18 22:03:22 135

原创 JZ40 --- 数组中只出现一次的数字

题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。题解:题解一:利用HashMappublic void FindNumsAppearOnce(int[] array, int num1[], int num2[]) { HashMap<Integer,Integer> map = new HashMap<Integer,Integer> (); for(int i = 0;i < array.leng

2020-08-18 21:23:16 213

原创 JZ39 --- 平衡二叉树

题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树。题解:平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。求出每颗子二叉树的子树高度差,如果大于1那就不是平衡二叉树,反之一定是。 // 求子树高度差 public int getDepth(TreeNode root){ if(root == null){ return 0; }

2020-08-18 20:22:13 136

原创 JZ38 --- 二叉树的深度

题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。题解:题解一:递归实现。public int TreeDepth(TreeNode root) { if(root == null){ return 0; } int left = TreeDepth (root.left); int right = TreeDepth (root.right); return M

2020-08-18 11:47:07 245

原创 如何测出四毫升的水?

题目:只有两个杯子,有充足的水,一个5毫升,一个3毫升。如何量出4毫升的水?答:先将 3ml 的杯子装满水,倒进 5ml 的杯子中,此时 5ml 的杯子中有 3ml 的水。再将 3ml 的杯子装满水,倒进 5ml 的杯子中,此时 5ml 的杯子只能装的下 2ml 的水,3ml 杯子中还余 1ml 的水。将 5ml 杯子中的水全部倒掉,余下的 1ml 水倒进 5ml 杯子中。将 3ml 杯子接满水,倒进 5ml 杯子中,此时被子中的水为 1+3=4ml。...

2020-08-18 10:13:48 4552

原创 两根香怎么测15分钟?

题目:两根分布都不均匀的香,每根香完全烧完需要1个小时,怎么用这两根香测出15分钟的时间?答:同时点上其中一根香的两头,另一根只点一头。当点两头那根香燃完时,时间过去半小时。另一根香剩下的可以燃半小时,再点上它的另一头。当这根香燃完时,时间为15分钟。...

2020-08-18 10:06:59 4101

原创 JZ37 --- 数字在升序数组中出现的次数

题目描述:统计一个数字在升序数组中出现的次数。题解:题解一:暴力求解,遍历数组,找出k的个数。 public int GetNumberOfK(int [] array , int k) { int count = 0; for(int i = 0;i < array.length;i++){ if(array[i] == k){ count++; } }

2020-08-15 12:07:57 278

原创 JZ36 --- 两个链表的第一个公共结点

题目描述:输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)题解:俩个链表相交于一结点,之后的链表肯定是一样的,因为一个结点不可能同时有俩个next。(1)求出俩个链表的长度len1,len2(2)俩长度之差记为steps,让长链表先遍历steps个结点(3)然后俩个链表一起向后走 public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead

2020-08-15 11:21:09 182

原创 JZ34 --- 第一个只出现一次的字符

题目描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)题解:题解一:(1)遍历字符串,将每个字符和其对应出现的次数填入map中。(2)遍历map,找到只出现一次的字符和对应的在字符串中的下标。 public int FirstNotRepeatingChar(String str) { HashMap<Character,Integer&gt

2020-08-13 21:14:54 382

原创 JZ33 --- 丑数

题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。题解:每一个丑数分别乘【2,3,5】可以产生3个丑数。p2=[2]p3=[3]p5=[5]对以上数据,我们进行几次迭代:(1)先将第一列的每个数乘以2:p2=[2,4]p3=[3,6]p5=[5,10](2)将第二列每个数乘以3:p2=[2,4,6]p3=[3,6,9]p5=[5,1

2020-08-13 20:34:43 158

原创 JZ32 --- 把数组排成最小的数

题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。题解:给定一个数组,我们找出他可能的排列组合,且是所有可能排列组合里最小的数字,所以我们需要额外加上一步来找出我们获得的所有排列组合里最小的数字。需要运用Collections.sort()来帮助我们找出最小值。String类型的 compareTo() 方法:compareTo()的返回值是整型,它是先比较对

2020-08-12 22:00:49 157

原创 JZ31 --- 整数中1出现的次数

题目:求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。题解:public int NumberOf1Between1AndN_Solution(int n) { int count = 0; for(int i =

2020-08-11 21:55:07 205

原创 JZ30 --- 连续子数组的最大和

题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)题解:时间复杂度O(n),数组中一个或连续的多个整数的最

2020-08-11 16:52:55 216

原创 JZ29 --- 最小的k个数

题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。题解:题解一:(1)直接用数组的排序算法。(2)输出数组的前k个元素。 public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> list = new ArrayList<>();

2020-08-11 11:59:27 210

原创 JZ28 --- 数组中出现次数超过一半的数字

题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。题解:题解一:(1)遍历一遍数组,在map中存每个元素出现的次数(2)遍历map,找出value的值大于数组长度一半的key。public int MoreThanHalfNum_Solution(int [] array) { int len = array.lengt

2020-08-10 21:26:31 207

原创 JZ27 --- 字符串的排列

题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。...

2020-08-10 09:41:56 299

原创 JZ26 --- 二叉搜索树与双向链表

题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。题解:(1)中序遍历搜索二叉树,并依次将结点存入list。(2)遍历list,改变其指向。 public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree == null){ return null; } ArrayList<TreeNo

2020-08-09 20:27:18 388

原创 == 和 equals() 的区别

对于==如果作用于基本数据类型的变量,则比较其存储位置的 “值” 是否相等。如果作用于引用类型的变量,则比较的是所指向对象的地址。对于 equals()注:equals() 方法不能作用于基本数据类型的变量,equals() 继承 Object 类,比较是否为同一对象。如果没有对 equals() 方法进行重写,则比较的是引用类型的变量所指向的对象的地址。诸如 String、Date类对 equals() 方法进行重写的话,比较的是所指向的对象是否为同一对象。面试题:"" .eq

2020-08-08 11:45:08 110

原创 JZ25 --- 复杂链表的复制

题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)题解:记原链表为p1先拷贝一份只有val和next指向链表p2.将俩个链表p1和p2糅合在一个链表中:在p1不为空的情况下p2.next = p1.next; 3. p1.next = p2;即:再将p1指向head进行rand

2020-08-07 22:26:27 128

原创 synchronized 和 volatile 的区别

前置知识:这两个关键字多用于线程安全中,首先需要理解线程安全的两个方面:执行控制和内存可见。执行控制的目的是控制代码执行(顺序)及是否可以并发执行。内存可见控制的是线程执行结果在内存中对其它线程的可见性。根据Java内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存),操作完成后再把结果从线程本地刷到主存。synchronized 关键字解决执行控制的问题,它会阻止其它线程获取当前对象的监控锁,这样就使得当前对象中被synchronized关键字保护的代码

2020-08-07 16:50:42 487

原创 JZ24 --- 二叉树中和为某一值的路径

题目描述:输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路:路径是从树的根结点开始往下一直到叶节点所经过结点形成一条路径,所以我们要确保最后一个路径结点为叶节点。使用递归一直向下将叶节点的值相加。递归结束条件:当前结点为空。如果当前节点为空时,这条路径的值正好等于 target,则存至结果队列中。如果不相等,则将路径栈中的栈顶元素,即当前叶子节点出栈。表示当前结点判断结束,不符合。

2020-08-06 21:33:09 384

原创 归并排序

概念:归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。稳定性:稳定思路:创建一个数组来存放结果,因为我们的数组在物理上是一个整体不可分割,所以分割的若干个小数组也只是在大数组内部进行比较然后排序数组首元素记为low,尾元素记为high,找到数组的最中

2020-08-06 21:00:54 133

原创 堆排序

概念:是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。基本原理也是选择排序,只是不在使用遍历的方式查找无序区间的最大的数,而是通过堆来选择无序区间的最大的。数。注意: 排升序要建大堆;排降序要建小堆。稳定性:不稳定思路:在堆的数据结构中,堆中的最大值总是位于根节点(在优先队列中使用堆的话堆中的最小值位于根节点)。堆中定义以下几种操作:最大堆调整(Max Heapify):将堆的末端子

2020-08-06 20:40:44 82

原创 选择排序

概念:每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后(或最前),直到全部待排序的数据元素排完 。稳定性:不稳定思路:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。实现: //无序区间[0 , arr.length-i) //有序区间[arr.length-i , arr.l

2020-08-06 20:19:41 103

原创 希尔排序

概念:希尔排序法又称缩小增量法,是对直接插入排序的优化。希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。稳定性:不稳定

2020-08-06 20:03:11 182

原创 直接插入排序

概念:整个区间被分为 有序区间 和 无序区间,每次选择无序区间的第一个元素,在有序区间内选择合适的位置插入。时间复杂度:最差:O(n^2)…数据逆序平均:O(n^2)最好:O(n)…数据有序思路:(1)橙色为有序区间,黄色为无需区间。(2)无序区间的第一个元素和有序区间的元素从后向前对比,找到合适的位置进行插入。实现:public static void insertSort(int[] arr){ //有序:[0,i) (第一个数字永远有序)

2020-08-06 19:42:58 103

原创 冒泡排序

概念:在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序。冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶

2020-08-06 16:19:04 121

原创 软件测试 --- 测试技术

一、按开发阶段分类1. 单元测试又叫模块测试,对软件最小组成单元测试。测试阶段:编码后或者编码前(TDD)测试对象:最小模块测试人员:白盒测试工程师或开发工程师测试依据:代码和注释+详细设计文档测试方法:白盒测试(对代码进行测试)测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试编码前测试(TDD)为 测试驱动开发 ,即研发人员依次按照测试用例写代码.2. 集成测试也叫联合、联调、组装测试,将程序模块组装起来,对系统的 接口及集成后的功能 进行正确性检测的

2020-08-03 16:29:04 273

空空如也

空空如也

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

TA关注的人

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