![](https://img-blog.csdnimg.cn/20200724120443860.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java编程题
关于牛客网、力扣上的一些常见编程题和选择题
秃秃等等
一个小小学生!
展开
-
【Java编程题】最大公共子串
题目描述:给定两个字符串,请编写代码,输出最长公共子串(Longest Common Substring),是指两个字符串中的最长的公共子串,要求子串一定是连续。输入描述:文本格式,2个非空字符串(字符数字组成),2个字符串以“,”英文逗号分隔,字符串长度均小于等于100;输出描述:整形,为匹配到的最长子串长度;示例1:输出:bab,caba输出:2方法:找出两个字符串中较长的那个和较短的那个,然后,设置前后指针,遍历较短的字符串,再到长的字符串里面去寻找有没有这个子字符串;代码原创 2020-09-15 20:11:08 · 468 阅读 · 1 评论 -
【Java编程题】第一次只出现一次的字符
题目链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/题目描述:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例:s = "abaccdeff"返回 "b"s = ""返回 " "限制:0 <= s 的长度 <= 50000解决方法:方法1:采用一个长度为26的int数组,...原创 2020-08-10 17:01:03 · 539 阅读 · 0 评论 -
【数据结构】栈和队列之间的相互转换
1.用队列实现栈队列:先进先出;栈:先进后出;实现的方法有:添加元素、删除栈顶元素(删除队列的最后一个)、返回栈顶元素(返回队列的最后一个)、判断栈(队列)是否为空;import java.util.*;public class Main { //利用队列实现栈 Queue<Integer> queue = new LinkedList<>(); //添加元素 public void push(int value){原创 2020-08-04 23:12:16 · 480 阅读 · 0 评论 -
【数据结构】给定一个链表,判定链表是否有环,如果有,返回链表开始入环的第一个节点, 如果链表无环,则返回 null。
1.判断链表是否有环思路:使用快慢指针解决是否有环假设链表是一个有环链表,设置两个指针,slow,和fast让两个指针从前往后遍历,而且fast的遍历速度是slow的两倍,如果有环的话,遍历快的fast的不会为null,并且slow一定会追上fast,fast会和slow相等,过程如下图所示:fast走两步,slow走一步 代码: public boolean hasCycle(ListNode head) { Li...原创 2020-08-01 11:15:08 · 480 阅读 · 1 评论 -
【Java编程题】查找无重复最长子串
题目描述:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke"是一个子序列,不...原创 2020-07-24 22:05:33 · 570 阅读 · 0 评论 -
【Java】链表找中间值,如果是偶数,返回中间第二个值
链表找中间值,如果是偶数,返回中间第二个值整体思想:使两个结点走的顺序为:* & * 一个周期1.判断头结点是否为空,如果为空,返回null2.设置两个结点back,front,使之都为头结点,3.循环当front不为null时1)先走front=front.next,再判断front是否为空,为空直接返回2)让back=back.next,再让front=fron...原创 2019-06-20 21:49:22 · 734 阅读 · 0 评论 -
【Java】删除指定链表中的字符
删除指定链表中的字符方法1:1.创建一个假结点:fake=new Node(1);//假结点,值为多少无所谓使:fake.next=head;Node c1=fake;node c2=head;2.当c2不为空时,if(c2.value=value) //值相等,进行删除{c1.next=c2.next; //就跳过了相等的这个值}else{c1=c...原创 2019-06-19 21:53:16 · 231 阅读 · 0 评论 -
【java】链表的逆置
逆置链表方法1:1.定义一个新链表,一开始为null; Node newNode=null;//newNode有两层含义,1).新链表的第一个结点,2).代表着整个链表2.循环cur,不为空3.因为一会cur.next会变化,所以先将其保存起来 Node next=cur.next4.进行头插 cur.next=newNode; newNode=cur;5.使cur往后遍历...原创 2019-06-19 21:43:49 · 665 阅读 · 0 评论 -
【Java】将两个有序链表合并为一个有序链表
java中将两个有序链表合并为一个有序链表:1.必须保证两个链表为有序链表2.在两个链表都不为空的条件下,设一个 last=null;(1)如果链表1的值小于等于链表2的值,进行循环,先放链表1的值到新链表result,如果result为空,视为头插,如果不为空,视为尾插,其中要保证last永远为最后一个结点,最后让循环走起来(2)如果链表2的值小于链表1的值,与(1)中方法相同,...原创 2019-06-08 11:45:43 · 10825 阅读 · 4 评论 -
【Java】在链表中找倒数第K个值
java在链表中找倒数第k个值:方法1:先求出链表的长度length,再利用length-k重新遍历,其中,当length<k时,那就没有这个值,需返回null;方法2:设置两个结点,利用双引用遍历,让结点1先遍历k次,走在节点2的前面,其中要注意结点1为null时返回;然后再在结点1不为空时,先走结点1,再走结点2,直至结点1为空;最后返回结点2//找倒数第k个值, 法1...原创 2019-06-08 11:14:45 · 375 阅读 · 0 评论 -
【Java】二分查找
用java代码实现二分查找注意:二分查找的前提时数组已经有序了二分查找思想:1.组中找到一个最左边的下标 left=0;找到最右边的下标right=长度-1(左闭右闭区间),再设一个中间值mid=left+(right-left)/2;2.循环时,左边要小于等于右边(左闭右闭时[left,right]),左边小于右边(左闭右开时[left,right) );3.当查找的值比mid大...原创 2019-05-26 11:04:13 · 112 阅读 · 0 评论 -
【java】求平均值
要求:求平均分,去掉一个最高分,去掉一个最低分,返回平均值(scores一定大于3)思想:先在for循环里面求出最大值和最小值,循环后面再把数组里的每个内容进行相加得sum,最后返回值里面再减去最大值和最小值除以数组的长度减2,注意:最后要进行强制类型转换,转化成double类型。public class Practice{ public static double averag...原创 2019-05-24 23:06:44 · 22988 阅读 · 1 评论 -
【Java】从数组中寻找最大值
Java代码:从数组中寻找最大值(和c语言思想相同),在一个方法里先设一个最大值max=0,循环数组让max依次和数组array[i]进行比较,如果array[i]>max,将数组织赋给max,将会实现数组中的最大值是max.注意Java中设数组时最好设为int [] array.public class Practice{ //找最大值 public static int max...原创 2019-05-24 21:04:43 · 16017 阅读 · 3 评论 -
【C语言】三种方法交换两个数的值
三种方法交换两个数的值:方法一:利用中间变量,以此依托交换两个数的值方法二:利用两数之间互相加减,来实现两数的交换方法三:利用按位异或^来实现两数的交换,注意两数需转换成二进制比较#define _CRT_SECURE_NO_WARNINGS #include<stdio.h>#include<stdlib.h> int main(){ ...原创 2019-05-19 22:04:23 · 4540 阅读 · 0 评论 -
【Java】在一个有序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
在一个有序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5有两种方法:创建一个虚结点和不创建虚结点方法1:创建一个虚结点1.创建一个假结点fake,让它的下一个结点为head,设Node prev=fake;设p1=...原创 2019-06-21 17:18:47 · 1051 阅读 · 0 评论 -
【Java】以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前,返回重新排列后的链表的头指针。
以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前,返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。思想:将链表分为两部分,一部分存比 x 小的值,一部分存大的值,最后将两个链表连接起来1.设置两个新链表,small,big为null,设置两个结点smalLast,bigList为空,(使这两个结点一直为最后一个结点)2.设cur=h...原创 2019-06-20 22:14:09 · 550 阅读 · 0 评论 -
【链表】给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次(Java实现)
题目链接:删除排序链表中的重复元素,重复元素只保留一个题意:有一个排序链表,删除所有重复的元素,使得重复的元素保留一个例如:2-->3-->3-->4-->4-->5结果为:2-->3-->4-->5题解:设置一个节点node=head,再设置一个结点为key,让它为node的下一个结点,如果两个结点的值相等,那就让node跳过key...原创 2019-10-28 23:13:24 · 945 阅读 · 0 评论 -
【力扣题】删除链表中的结点
今天在力扣中遇到一个很有趣的题目,没有读懂题目所以按常规的思维做了,最后看了题解才终于理解了这道题;题目链接:删除链表中的结点题目意思:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 --head =[4,5,1,9],它可以表示为:4--->5--->1--->9 node=5;结果为:4--...原创 2019-10-28 22:54:01 · 183 阅读 · 0 评论 -
【数据结构】二叉树遍历(Java实现)
题目描述编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。题目链接:https://www.nowcoder.com/practice/4b91205483694f449f94c17988...原创 2020-03-29 20:34:16 · 648 阅读 · 0 评论 -
【Java编程题】找出n个数里最小的k个
题目:找出n个数里最小的k个题目链接:https://www.nowcoder.com/questionTerminal/cc727473d1e248ccb674eb31bd8683dc输入描述:每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n 不超过100。输出描述:输出n个整数里最小的k个数。升序输出示例1输入 3 9 6 8 -10 7 -11 19 3...原创 2020-03-26 17:04:52 · 855 阅读 · 0 评论 -
【选择题】JavaWeb选择题(3)
1.上网的时候,访问某个网页却突然出现了某个运营商的网页(如联通、电信)。出现此问题可能的原因是?(A)A DNS劫持 B DDoS攻击 C MAC地址欺骗 D 伪造DHCP服务器解释:NDS劫持:又称为域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,负责返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反映或访问...原创 2020-03-25 22:38:45 · 2682 阅读 · 0 评论 -
【Java编程题】字母统计
题目:字母统计题目链接:https://www.nowcoder.com/questionTerminal/de7bf0945c1c4bd1aa9d49573b831f3c题目描述:输入一行字符串,计算其中A-Z大写字母出现的次数输入描述:案例可能有多组,每个案例输入为一行字符串。输出描述:对每个案例按A-Z的顺序输出其中大写字母出现的次数。示例1输入DFJEIWFN...原创 2020-03-19 17:33:27 · 534 阅读 · 0 评论 -
【选择题】网络选择题(2)
1.下面关于IP地址的论述中哪个是不正确的?(C)A 用户主机的IP地址可静态分配也可以动态分配 B IP地址有单播地址,也有多播地址 C 一个用户主机只能有一个IP地址 D 在以太局域网中使用ARP协议查找与一IP地址对应的MAC地址解释:C:一个用户主机可以有多个IPmac地址只有一个2.tcp套接字中,不会阻塞的是哪一种操作? (D)A read B wr...原创 2020-03-19 16:42:44 · 1211 阅读 · 0 评论 -
【选择题】网络选择题(1)
1.网段地址 154.27.0.0 的网络。若不做子网划分,能支持()台主机(C)A 254 B 1024 C 65,534 D 16,777,206解释:它是属于B类地址,前16为网络号,后16为为主机号,可提供的主机个数为2^16个(65536),除去全0和全1号码,可以支持6534台主机2.下面关于源端口地址和目标端口地址的描述中,正确的是(A )A 在TCP/UD...原创 2020-03-16 22:52:30 · 3636 阅读 · 0 评论 -
【Java编程题】删除公共字符串
题目:删除公共字符串题目链接:https://www.nowcoder.com/questionTerminal/f0db4c36573d459cae44ac90b90c6212题目描述:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:...原创 2020-03-12 22:41:36 · 443 阅读 · 0 评论 -
【Java编程题】字符串中找出连续最长的数字串
牛课题:字符串中找出连续最长的数字串题目描述:读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。题目链接:https://www.nowcoder.com/questionTerminal/bd891093881d4ddf9e56e7cc8416...原创 2020-03-08 22:37:17 · 1503 阅读 · 0 评论 -
【Java编程题】寻找第K大
牛课题:寻找第K大题目说明:有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。题目链接:https://www.nowcoder.com/questionTerminal/e016ad9b7f0b45048c58a9f27ba618bf方法1:根据题意利用简单的编程思...原创 2020-03-06 16:28:15 · 540 阅读 · 0 评论 -
【Java编程题】在数组中找到出现次数大于一半的数
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。实现方法1:利用中位数第一步:对数组先进行排序第二步:如果出现次数要大于数组的一半,则数组下标为数组长度一半的这个数一定为要求的这个数第三步:从前到后统计这个数...原创 2020-02-21 16:58:04 · 913 阅读 · 0 评论 -
【Java】最大公因数和最小公倍数的算法
1.最大公因数方法1:找出两个数里面的最大值,利用循环进行求解;可以说,这种方法没有经过任何的算法,利用的纯数学的方法; 但是要循环遍历其中较大的正整数,如果两个数量都非常大的话,效率是非常低的;如下:public static int gcd(int a,int b){ int max=(a>b)?a:b; int ...原创 2020-04-16 22:38:51 · 3289 阅读 · 0 评论 -
【Java编程题】连续子数组的最大和
剑指offer42:连续子数组的最大和描述:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。方法1:利用到动态规划1.定义一个值max = array[0];2.定义数组dp,dp[0] = array[0];3.进行遍历选择,选择最大的,...原创 2020-07-23 16:45:23 · 260 阅读 · 0 评论 -
【Java编程题】只出现一次的数字(三个题)
题目1:(136)只出现一次的数字题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4思路:利用运算符异或(^),异或运算的规则:相同为0,相异为1;异或本身的特点:一个数和0做异或等于本身:a^0 = a; 一个数和其本身做异或等于0:a^a = 0; 异或运算满足交换律和结合律:a^b^a = (a^a)^b =.原创 2020-06-24 17:13:24 · 455 阅读 · 0 评论 -
【C语言】判断回文数
判断一个数是否为回文数,回文数就是它的数字反向排列所得的自然数与它的本身是相等的,比如,若n=12321,则称它是一个回文数。:程序利用到一个数位遍历的for循环,将输入的数字进行反向排列,再与原输入的数字进行比较,如果相等则为回文数。代码如下:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdl...原创 2019-03-23 14:24:31 · 26905 阅读 · 3 评论 -
【C语言】打印星号图案
打印一个上半部分为等腰三角形,下半部分为倒等腰三角形星号图案:思想为创建一层大的循环表示行数,然后里面一层循环表示空格的数目,一层表示星号的数目,假设有n行,i表示第i行,空格数为(n-i),星号数为(2*i-1);下半部分从第n行开始,逐渐减少,其他同上半部分。如有写的不对,望指教。代码如下:#define _CRT_SECURE_NO_WARNINGS 1#include<std...原创 2019-03-21 22:53:15 · 9878 阅读 · 1 评论 -
【C语言】打印星号图案
打印出如下的图案:思想为创建两层,一层表示行数,一层表示星号数#include<stdio.h>#include<stdlib.h>int main (){ int i, j; for ( i = 1; i <= 7; i++ ) { for (j = 1; j <= (i * 2 - 1); j++) { printf("*"...原创 2019-03-20 23:25:35 · 1428 阅读 · 0 评论