![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
山深✨
这个作者很懒,什么都没留下…
展开
-
回文串
回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。例如:A = “aba”,B ...原创 2020-04-09 15:08:51 · 393 阅读 · 1 评论 -
加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。来源:力扣(L...原创 2020-02-10 16:17:55 · 462 阅读 · 1 评论 -
简单HTTP服务器和客户端
Clientimport java.io.ByteArrayInputStream;import java.io.IOException;import java.net.Socket;import java.util.Scanner;public class SimpleHttpClient { public static void main(String[] args) th...原创 2020-02-10 14:47:53 · 573 阅读 · 0 评论 -
TCP协议
Serverimport java.io.*;import java.net.ServerSocket;import java.net.Socket;public class TCPServer { public static void main(String[] args) throws IOException { ServerSocket serverSock...原创 2020-02-10 14:31:59 · 101 阅读 · 0 评论 -
套接字编程二
Serverpackage tcp.http;import java.io.*;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public class Server { public static void m...原创 2020-02-10 14:30:38 · 88 阅读 · 0 评论 -
套接字编程
Serverpackage udp.echo;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.util.HashMap;import java.util.Map;publ...原创 2020-02-10 14:28:51 · 186 阅读 · 0 评论 -
寻找数组的中心索引
给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出: 3解释:索引3 (nums[3] =...原创 2020-02-06 13:41:22 · 151 阅读 · 0 评论 -
Character方法
isLetter()是否是一个字母isDigit()是否是一个数字字符isWhitespace是否是一个空格isUpperCase()是否是一个大写字母isLowerCase()是否是一个小写字母toUpperCase()转化为字母的大写形式toLowerCase()转化为字母的小写形式...原创 2020-02-06 12:59:47 · 480 阅读 · 0 评论 -
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 1:输入:“ab-cd”输出:“dc-ba”示例 2:输入:“a-bC-dEf-ghIj”输出:“j-Ih-gfE-dCba”示例 3:输入:“Test1ng-Leet=code-Q!”输出:“Qedo1ct-eeLg=ntse-T!”来源:力扣(LeetCode)...原创 2020-02-06 12:56:10 · 889 阅读 · 0 评论 -
合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2...原创 2020-02-05 14:09:54 · 141 阅读 · 0 评论 -
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(Le...原创 2020-02-03 14:50:50 · 6469 阅读 · 0 评论 -
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 k...原创 2020-02-03 14:49:42 · 1653 阅读 · 2 评论 -
奥巴马编程
链接:https://www.nowcoder.com/questionTerminal/8af708723b0f45f9a80bc80d78d3566e来源:牛客网美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算 机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧...原创 2019-11-22 21:09:59 · 926 阅读 · 0 评论 -
生成格雷码
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。给定一个整数n,请返回n位的格雷码,顺序为从0开始。测试样例:1返回:[“0”,“1”]分析:2的格雷码为 00 01 10 113的格雷码实质是给2的前面添加0或者添加1构成的,比如:000 001 010 011100...原创 2019-11-22 21:03:41 · 116 阅读 · 0 评论 -
有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。 给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于
测试样例:2,2返回:2乍一看没有什么思路,但是仔细想想,每次走都是一样的,要么向右或者向下,所以想到了递归,向右或者向下其实就是行或者列,解决起来就很简单。import java.util.*; public class Robot { public int countWays(int x, int y) { // write code here ...原创 2019-11-19 16:56:57 · 476 阅读 · 0 评论 -
Fibonacci数列是这样定义的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci数列就形如:0, 1,
输入描述:输入为一个正整数N(1 ≤ N ≤ 1,000,000)输出描述:输出一个最小的步数变为Fibonacci数"示例1输入15输出2根据示例来进行讲解,判断几步可以成为斐波那契数,首先得先创建一个菲波那切数列,然后根据当前数判断是+1快速还是-1快速。如图,三个变量来创建一个斐波那契数列,如图,当走到如图所示位置是,c=21,比15要大,这时候就确定15的大概位置...原创 2019-11-19 16:51:52 · 1761 阅读 · 0 评论 -
输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2
输入描述:输入为一行,n(1 ≤ n ≤ 1000)输出描述:输出一个整数,即题目所求示例1输入10输出2分析:任意挑选几个数字进行分解质因数,例如:6 = 2315 = 3564 = 222222 = 2^6100 = 2^2 * 5^2576 = 2^6 * 3^2那么我们在计算n的阶乘时,实际上就是把所有小于等于n的正整数分解成质因数,然后再将其乘到一起,那么...原创 2019-11-18 09:42:34 · 2261 阅读 · 1 评论 -
StringBuffer 和 StringBuilder
1**.区别**:String和StringBuffer最大的区别在于:String的内容无法修改,**而StringBuffer的内容可以修改。**频繁修改字符串的情况考虑使用StingBuffer。2.互相转化StringBuffer对象和String对象之间的互转的代码如下:String s = “789”;StringBuffer sb1 = new StringBuffer(“4...原创 2019-11-16 14:16:16 · 97 阅读 · 0 评论 -
n个数里出现次数大于等于n/2的数
链接:https://www.nowcoder.com/questionTerminal/eac8c671a0c345b38aa0c07aba40097b来源:牛客网输入n个整数,输出出现次数大于等于数组长度一半的数。输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。输出描述:输出出现次数大于等于n/2的数。示例1输入3 9...原创 2019-11-16 13:58:42 · 232 阅读 · 0 评论 -
String类使用方法
1.字符和字符串的转化2.字节和字符串3.字符串比较4.字符串查找原创 2019-11-16 13:53:53 · 97 阅读 · 0 评论 -
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例1输入They are students.aeiou输出Thy r stdnts.这道题主要就是考察对String类方法的熟练使用程度,import java.util.*;public class Main{ public static void main(String[] args){ ...原创 2019-11-16 13:43:27 · 426 阅读 · 0 评论 -
小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不
import java.util.*;public class Main{public static void main(String args[]) {Scanner in = new Scanner(System.in);while(in.hasNextInt()){int n = in.nextInt();System.out.println(count(n)); } }p...原创 2019-11-16 13:38:40 · 846 阅读 · 0 评论 -
读入一个字符串str,输出字符串str中的连续最长的数字串
输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。这里需要设置两个变量,一个是max,用来记录连续数字的个数,一个是end用来记录当前数字串最后一个数字的位置,设置一个循环,一旦发现数字,count++,之后比较max和count的大小, 如果max比count小,及时更新max和end的值,最后输出的数字位置应该从...原创 2019-11-16 13:33:17 · 405 阅读 · 0 评论 -
有一组数,对于其中任意两个数组,若前面一个大于后面一个数字,则这两个数字组成一个逆序对。请设计一个高效的算法,计算给定数组中的逆序对个数。
给定一个int数组A和它的大小n,请返回A中的逆序对个数。保证n小于等于5000。测试样例:[1,2,3,4,5,6,7,0],8返回:7这道题做起来很简单,设置两个循环,一个循环一次遍历数组中的数并且设置一个标记位,一个循环从当前数开始,依次和之后的数进行比较,发现逆序数字,标记位加一。import java.util.*; public class AntiOrder { ...原创 2019-11-16 13:26:05 · 448 阅读 · 0 评论 -
有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->
输入描述:每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。输出描述:一行输出最后一个被删掉的数的原始下标位置。这道题使用ArrayList能够很轻松的解决,每隔两个数删除,就是删除顺序表中i=i+2的数,又由于循环所以要%顺序表的长度。 然后利用顺序表的特性,达到目的import java.util.*;public class ...原创 2019-11-16 13:19:20 · 4228 阅读 · 5 评论 -
保证java运行线程安全机制
如何保证线程安全:1.如果可以设计出不需要共享的数据,天生安全2.如果非要进行数据的共享,尽可能的保证数据只读性——不可变对象3.利用各种机制保证以上的三点:原子性,可见性,重排序。主要方法有两种:sychronized方法:执行synchronized修饰的普通方法时,首先需要lock引用指向的对象中的锁1.如果可以缩,就正常执行代码2.否则,需要等其他线程把锁unlock方法...原创 2019-11-16 13:11:45 · 120 阅读 · 0 评论 -
多线程
程序的启动过程(如何从程序变为进程)双击程序进行启动OS:1.找到文件,检查文件是否合法2.创建一个PCB对象-描述PCB pcb=nnew PCB();3.为进程分配一个唯一的id4.把程序文件按照指定格式加载到内存中5.把PCB对象和之前加载的内容关联。pcb.pc=pc;pcb.dataZone=dataZone;6.填充基本的记账信息。pcb.startAt=Syst...原创 2019-11-03 18:05:35 · 105 阅读 · 0 评论 -
Comparable和Comparator以及equals和HashCode方法的覆写
Comparable和Comparator的使用当两个元素进行比较时,属于自然顺序比较,不需要第三方介入比较时,使用Comparable比较,当需要第三方进行比较时,使用Comparator进行比较。使用Comparable时需要覆写comparaTo方法,而使用Comparator接口时需要覆写compara方法。举一个例子,比如说以下代码:import java.util.Ar...原创 2019-10-27 14:25:32 · 311 阅读 · 0 评论 -
Map和Set
1.作用Map和Set的作用是在大量数据元素中找到某个特定的元素。有两种模型:Set模型是判断关键字在不在组合中,只有KeyMap模型是Key-Value模型,即根据Key元素找到相对应的Value值。2.Map和Set的使用Map的使用Map使用示例:import java.util.HashMap;import java.util.Map;public class ...原创 2019-10-27 13:46:59 · 108 阅读 · 0 评论 -
哈希表的实现
哈希表容易造成冲突,为了避免冲突:1.尽可能的让出来的下标符合均匀分布。2.负载因子的调节负载因子=哈希表中的数据个数/数组的长度负载因子越少,冲突率越低把数组长度变大事先规定好一个阙值,来控制size一般情况下来讲,哈希表主要涉及两种办法1.线性探测(主要是考试出题)求成功的平均查找长度和失败的平均查找长度代码实现开散列public class Hash { ...原创 2019-10-14 23:30:25 · 278 阅读 · 0 评论 -
给图书排序,分别按照 图书编号, 书名,价格,销量,评价排序
import java.util.ArrayList;import java.util.Comparator;import java.util.List;class authorComparator implements Comparator<Book> { @Override public int compare(Book o1, Book o2) { ...原创 2019-10-04 16:51:59 · 4050 阅读 · 0 评论 -
排序(2)
快速排序从待排序区间选择一个数,作为基准值(pivot);Partition: 遍历整个待排序区间,将比基准值小的(可以包含相等的)放到基准值的左边,将比基准值大的(可以包含相等的)放到基准值的右边;采用分治思想,对左右两个小区间按照同样的方式处理,直到小区间的长度 == 1,代表已经有序,或者小区间的长度 == 0,代表没有数据。private static void quickSo...原创 2019-10-04 11:04:21 · 124 阅读 · 0 评论 -
排序(1)
排序是数据结构中的一个大板块,现在将排序进行一个系统的举例。插入排序插入排序是从整个数组的第二个数开始,划分区间,第二个数及之后是无序区间,排一次序无序区间减少一次,然后每次用无序区间的第一个数和之前的有序区间进行比较,如果小于有序区间的最后一个数,把有序区间这个数往后移一位,继续比较,如果还小,继续后移。一次插入完成之后,把key放到空位置。先来看代码: public static v...原创 2019-09-27 19:28:34 · 128 阅读 · 0 评论 -
堆
1.堆的实质堆其实是二叉树按照层序遍历放在一个数组中的表示方法。如果是堆,它有以下性质:堆逻辑上是一棵完全二叉树堆物理上是保存在数组中满足任意结点的值都大于其子树中结点的值,叫做大堆,或者大根堆,或者最大堆反之,则是小堆,或者小根堆,或者最小堆。2.求双亲结点和左右子树的公式已知双亲(parent)的下标,则:左孩子(left)下标 = 2 * parent + 1;右孩子...原创 2019-09-25 23:13:53 · 140 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树的非递归遍历二叉树的递归遍历对于我们程序猿来说简单易懂,代码量较少,但是相对来讲比较浪费空间。所以用非递归法来实现一下。前序遍历前序遍历使用一个栈来解决,从根节点开始,到左子树,先让根节点入栈,之后左子树,然后是右子树。先来看代码实现: public void preorder(Node root) { Stack<Node> stack = new ...原创 2019-09-24 18:10:13 · 365 阅读 · 0 评论 -
二叉树的层序遍历以及带有层次数量的层序遍历以及根据判断一个数是否是完全二叉树
层序遍历的方法如下:比如有一棵树:层次遍历序列为: 5 3 1 4 7使用代码实现时,要使用一个队列,进队列之后,出队列时判断当前结点是否有左子树和右子树,如果有,先把左子树入队列,之后把右子树入队列,以此类推。这是把根节点入队列并出队列之后把结点5的左子树和右子树入队列之后的情况。这是把结点3出队列,并且把它的左子树4和右子树7入队列之后的情况如果结点1 之后还有结点,...原创 2019-09-21 17:34:52 · 1090 阅读 · 0 评论 -
根据带有#(结点为空)的前序遍历序列构造二叉树
比如这样一个序列构造出来的二叉树如下:这道题最主要的是没有两个遍历序列找不到左子树和右子树的分界点,所以需要另外一个变量根据#的数量来标记左子树使用了几个结点,之后的都属于右子树的序列,所以继续使用一个静态内部类,这个类中有结点以及使用的个数,之后继续使用递归求解。import java.util.*;public class BuildTree { private stat...原创 2019-09-21 17:13:51 · 2307 阅读 · 0 评论 -
从前序与中序遍历序列构造二叉树&&从后序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-tree-from-pre...原创 2019-09-19 17:12:20 · 186 阅读 · 0 评论 -
二叉树 java
二叉树二叉树的前中后序遍历public void preOrderTraversal(Node root) { if (root == null) { return; } System.out.println(root); preOrderTraversal(root.left); p...原创 2019-09-17 16:50:40 · 138 阅读 · 0 评论