自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试题22:链表中环的入口节点(Java版)

题目:如果一个链表中包含环,那么应该如何找出环的入口节 点?从链表的头节点开始顺着next指针方向进入环的第1个节点为环的入口节点。例如,在如图4.3所示的链表中,环的入口节点是节点 3。题目分析因为要找到环的入口节点,所以首先需要判断链表是否有环,当链表有环时,我们可以使用两个指针(一个快指针和一个慢指针),快指针一次移动两下,慢指针一次移动一下,当两个指针相遇时则表明此时两个指针已经进入到环里了,且设快指针移动了2k步,则慢指针移动了k步,仔细观察可以发现当慢指针再移动k步会回到原地(因.

2022-05-13 19:35:15 538

原创 面试题21:删除倒数第k个节点(Java版)

题目:如果给定一个链表,请问如何删除链表中的倒数第k个节 点?假设链表中节点的总数为n,那么1≤k≤n。要求只能遍历链表 一次。例如,输入图4.1(a)中的链表,删除倒数第2个节点之后的链表如图4.1(b)所示。题目分析因为只能遍历链表一次,所以采用双指针法,先让指针p1前移k步,然后再移动指针p2,此时p1和p2同时移动,等p1移动到链表尾部时,p2刚好移动到第倒数n + 1个节点此时只需要把倒数第n + 1个节点的next指向他的next.next(倒数第n - 1个节点)上就删除掉了倒数第.

2022-05-08 20:54:13 899

原创 面试题20:回文子字符串的个数(Java版)

题目:给定一个字符串,请问该字符串中有多少个回文连续子 字符串?例如,字符串"abc"有3个回文子字符串,分别 为"a"、“b"和"c”;而字符串"aaa"有6个回文子字符串,分别为"a"、“a”、“a”、“aa”、“aa"和"aaa”。题目分析通过双指针法从中间分别向两边同时移动,因为字符串长度可能为奇数也可能为偶数,为奇数时中心点只有一个,而为偶数时中心点则有两个所以当字符串长度为奇数时两个指针的起点都在哪一个中心点上而为偶数时则分别在两个中心点上。具体实现public int countS.

2022-05-08 18:21:18 747

原创 面试题19:最多删除一个字符得到回文(Java版)

题目:给定一个字符串,请判断如果最多从字符串中删除一个 字符能不能得到一个回文字符串。例如,如果输入字符串"abca",由于删除字符’b’或’c’就能得到一个回文字符串,因此输出为 true。题目分析使用两个指针分别位于字符串的头部和尾部并且同时向中间移动,如果遇到两个指针指向的字符不相同则将头指针往中间再移动一下或将尾指针向中间移动一下,只要其中任意一个指针移动后满足条件了的话则说明可以通过删除一个字符得到回文,如果两个指针移到中间的过程中所有的字符都相等则说明这个字符串本来就是一个回文。具体实.

2022-05-08 17:16:22 729

原创 面试题18:有效的回文(Java版)

题目:给定一个字符串,请判断它是不是回文。假设只需要考 虑字母和数字字符,并忽略大小写。例如,"Was it a cat I saw?"是一个回文字符串,而"race a car"不是回文字符串。// 通过两个指针在字符串头部和尾部分别同时向中间移动// 每移动一次判断是否为子母和数字,如果是字母和数字// 则将字母同时转化为小写比较(因为忽略字母大小写)// 如果不是字母和数字则对应指针再往中间移动public boolean isPalindrome(String s) { int.

2022-05-07 19:02:46 306

原创 面试题17:包含所有字符的最短字符串

题目:输入两个字符串s和t,请找出字符串s中包含字符串t的 所有字符的最短子字符串。例如,输入的字符串s为"ADDBANCAD", 字符串t为"ABC",则字符串s中包含字符’A’、'B’和’C’的最短子字 符串是"BANC"。如果不存在符合条件的子字符串,则返回空字符串""。如果存在多个符合条件的子字符串,则返回任意一个。// 利用哈希表和双指针来解题public String minWindow(String s, String t) { HashMap<Character, In.

2022-05-07 11:36:12 810

原创 面试题16:不含重复字符的最长子字符串(Java版)

题目:输入一个字符串,求该字符串中不含重复字符的最长子 字符串的长度。例如,输入字符串"babcca",其最长的不含重复字符的子字符串是"abc",长度为3。// 用两个指针来指向子字符串的最左边和最右边// 通过移动两个指针来找到不包含重复字符的字符串// 当字符串不重复时将右边的指针往右移动增加子字符串的长度// 当子字符串中字符重复时将左边的指针往右移动直到两个指针// 之间的子字符串中无重复字符为止counts长度为128的一个哈希表// 因为ASCII码最多表示128个数,将字符的.

2022-05-07 08:33:32 573

原创 面试题15:字符串中的所有变位词

题目:输入字符串s1和s2,如何找出字符串s2的所有变位词在 字符串s1中的起始下标?假设两个字符串中只包含英文小写字母。例如,字符串s1为"cbadabacg",字符串s2为"abc",字符串s2的两个变位词"cba"和"bac"是字符串s1中的子字符串,输出它们在字符 串s1中的起始下标0和5。// 使用哈希表来保存s2字符串中的字符出现的次数// 当s1中子字符串出现同样的字符的时候哈希表对应的字符的值减一// 所以当子字符串是变位词时哈希表中的所有字符的值都为零public List&l.

2022-05-06 20:52:00 170

原创 面试题14:字符串中的变位词(Java版)

题目:输入字符串s1和s2,如何判断字符串s2中是否包含字符 串s1的某个变位词?如果字符串s2中包含字符串s1的某个变位词, 则字符串s1至少有一个变位词是字符串s2的子字符串。假设两个字 符串中只包含英文小写字母。例如,字符串s1为"ac",字符串s2为"dgcaf",由于字符串s2中包含字符串s1的变位词"ca",因此输出为true。如果字符串s1为"ab",字符串s2为"dgcaf",则输出为 false。// 使用哈希表来保存s1字符串中的字符出现的次数// 当s2中子字符串出现同样的字符.

2022-05-06 12:58:07 308

原创 面试题13:二维子矩阵的数字之和(Java版)

题目:输入一个二维矩阵,如何计算给定左上角坐标和右下角 坐标的子矩阵的数字之和?对于同一个二维矩阵,计算子矩阵的数 字之和的函数可能由于输入不同的坐标而被反复调用多次。例如, 输入图中的二维矩阵,以及左上角坐标为(2,1)和右下角坐标 为(4,3)的子矩阵,该函数输出8。public class NumMatrix { private int[][] sums; public NumMatrix(int[][] matrix) { if (matrix.lengt.

2022-05-06 10:10:06 1209

原创 面试题12:左右两边子数组的和相等(Java版)

题目:输入一个整数数组,如果一个数字左边的子数组的数字之和等于右边的子数组的数字之和,那么返回该数字的下标。如果存在多个这样的数字,则返回最左边一个数字的下标。如果不存在这样的数字,则返回-1。例如,在数组[1,7,3,6,2,9]中,下标为3的数字(值为6)的左边3个数字1、7、3的和与右边两个数字2和9的和相等,都是11,因此正确的输出值是3。// 利用右边的数字之和等于总的数字之和减去左边// 的数字之和与分界点的那个数字这个规律来比较两// 边的数是否相同public static in.

2022-05-06 10:02:03 560

原创 面试题11:0和1个数相同的子数组(Java版)

题目:输入一个只包含0和1的数组,请问如何求0和1的个数相同的最长连续子数组的长度?例如,在数组[0,1,0]中有两个子数组包含相同个数的0和1,分别是[0,1]和[1,0],它们的长度都是2,因此输出2。// 用-1来代替数组中的0,因为这样的话当0和1的数量相等时,// 连续子数组中的和就恰好为零,因此当m>n,且前m个数和前n个数的和都相同时,// 前m个数减去前n个数则为0,即第n+1个数到第m个数之间的数的和为零0// 即第n+1个数到第m个数这个连续子数组就为0和1数量相同的

2022-05-01 23:23:32 413

原创 面试题10:和为k的子数组(Java版)

题目:输入一个整数数组和一个整数k,请问数组中有多少个数字之和等于k的连续子数组?例如,输入数组[1,1,1],k的值为2,有2个连续子数组之和等于2。// 因为求得是一个连续子数组,所以当m大于n时,第前m项的和减去// 第前n项的和等于k则代表n+1到m之间连续的数组的和等于k以此来// 求出和为k的连续数字的个数public static int subArraySum(int[] nums, int k) { Map<Integer, Integer> sumToCo

2022-05-01 18:57:36 640

原创 面试题9:乘积小于k的子数组(Java版)

题目:输入一个由正整数组成的数组和一个正整数k,请问数组中有多少个数字乘积小于k的连续子数组?例如,输入数组[10,5,2,6],k的值为100,有8个子数组的所有数字的乘积小于100,它们分别是[10]、[5]、[2]、[6]、[10,5]、[5,2]、[2,6]和[5,2,6]。// 因为是求连续子数组的个数所以可以使用左右指针的移动来确定满足条件的子数组个数public static int numSubarrayProductLessThanK(int[] nums, int k) {

2022-05-01 11:08:05 711

原创 面试题8:和大于或等于k的最短子数组(Java版)

题目:输入一个正整数组成的数组和一个正整数k,请问数组中和大于或等于k的连续子数组的最短长度是多少?如果不存在所有数字之和大于或等于k的子数组,则返回0。例如,输入数组[5,1,4,3],k的值为7,和大于或等于7的最短连续子数组是[4,3],因此输出它的长度2。public int minSubArrayLen(int target, int[] nums) { int left = 0; int sum = 0; int minLength = Integer.MAX_

2022-05-01 09:49:12 837

原创 面试题7:数组中和为0的3个数字(Java版)

题目:输入一个数组,如何找出数组中所有和为0的3个数字的三元组?需要注意的是,返回值中不得包含重复的三元组。例如,在数组[-1,0,1,2,-1,-4]中有两个三元组的和为0,它们分别是[-1,0,1]和[-1,-1,2]。//首先将数组排序//固定一个固定指针i然后右移指针j和左移指针k// j的初始位置在最开头,k的初始位置在最末尾public List<List<Integer>> threeSum(int[] nums) { List<List&l

2022-04-28 10:05:49 513

原创 面试题6:排序数组中的两个数字之和(Java版)

题目:输入一个递增排序的数组和一个值k,请问如何在数组中找出两个和为k的数字并返回它们的下标?假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次。例如,输入数组[1,2,4,6,10],k的值为8,数组中的数字2与6的和为8,它们的下标分别为1与3。//使用双指针,一个指针在前,一个指针在后,// 如果两个指针所指的数之和大于目标值则右指针左移,// 否则左指针右移(因为数组按照升序排列,即右边的数总是比左边的大)public int[] twoSum(int[] numbe

2022-04-28 09:06:25 258

原创 面试题5:单词长度的最大乘积(Java版)

题目:输入一个字符串数组words,请计算不包含相同字符的两个字符串words[i]和words[j]的长度乘积的最大值。如果所有字符串都包含至少一个相同字符,那么返回0。假设字符串中只包含英文小写字母。例如,输入的字符串数组words为[“abcw”,“foo”,“bar”,“fxyz”,“abcdef”],数组中的字符串"bar"与"foo"没有相同的字符,它们长度的乘积为9。"abcw"与"fxyz"也没有相同的字符,它们长度的乘积为16,这是该数组不包含相同字符的一对字符串的长度乘积的最大值。//

2022-04-27 20:50:39 703

原创 面试题4:只出现一次的数字(Java版)

题目:输入一个整数数组,数组中只有一个数字出现了一次,而其他数字都出现了3次。请找出那个只出现一次的数字。例如,如果输入的数组为[0,1,0,1,0,1,100],则只出现一次的数字是100。// 因为只有一个数出现了一次,其余的数都是出现了3次// 所以出现了三次的数它们的每个二进制位相加一定能够被三整除// 如果哪一个数位不能被三整除,则证明那个出现1次的数在该数位的值为1// 如果能被整除,则证明出现一次的那个那个数该数位为0public static int singleNumber(in

2022-04-27 17:53:58 1452

原创 面试题3:前n个数字二进制形式中1的个数(Java版)

题目:输入一个非负数n,请计算0到n之间每个数字的二进制形式中1的个数,并输出一个数组。例如,输入的n为4,由于0、1、2、3、4的二进制形式中1的个数分别为0、1、1、2、1,因此输出数组[0,1,1,2,1]。//方法一通过规律:与比自己小1的数反复求与,每求一次与最右边的1就会减少一个public static int[] countBits(int num) { int[] result = new int[num + 1]; for (int i = 0; i <=

2022-04-27 15:21:36 243

原创 面试题2:二进制加法(Java版)

题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。例如,输入的二进制字符串分别是"11"和"10",则输出"101"。 public static String addBinary(String a, String b) { // 创建一个StringBuilder对象来对二进制字符串进行操作 StringBuilder result = new StringBuilder(); // i j 为字符串中字符的索引,因为

2022-04-27 10:49:22 649

原创 面试题1:整数除法(Java版)

题目:输入2个int型整数,它们进行除法计算并返回商,要求不得使用乘号’*‘、除号’/‘及求余符号’%'。当发生溢出时,返回最大的整数值。假设除数不为0。例如,输入15和2,输出15/2的结果,即7。/** * 返回整数除法结果 * @param dividend 被除数 * @param divisor 除数 * @return 整数除法结果 */public int divide(int dividend, int divisor) { if (dividend == 0x8

2022-04-26 18:57:58 418

原创 滑动窗口求最大最小值详解(Java版)

题目:给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。注意:如果某些数字不在 0∼n−1的范围内,或数组中不包含重复数字,则返回 -1;...

2022-04-26 15:04:30 926

原创 windows系统VMware中安装CentOS8

引言不知道大家有没有发现,现在的服务器端的市场已经被 Linux 系统占领了,而且目前手机最流行的操作系统之一 Android 系统也是基于 Linux 内核开发出来的。很多很火的技术,什么虚拟化,云计算,大数据等等都默认支持的 Linux 操作系统。如今的软件开发行业,Linux 已经成为了主流,可以豪不夸张的说,作为一名软件开发工程师,如果你还是只知道在 Windows 的集成开发环境(IDE:Vistual Studio)中开发 Windows 端运行的软件,那么你错过了许多编程行业有趣的事

2021-08-22 00:50:11 359

原创 快速搭建LAMP环境

引用有了服务器准备部署项目的时候大家做的第一件事情一定是搭建LAMP环境吧,下面我就带大家来了解一下如何在服务中搭建LAMP环境快速搭建LAMP环境为了方便大家操作大家可以直接上免费体验一下如何部署LAMP环境,阿里云专门有相关的操作指南首先进入该网址https://developer.aliyun.com/adc/scenario/6869de098ad44fc8a1560a1836a7c5f2?spm=a2c6h.14089369.J_2170925380.8.72cf1efcVHCnzH

2021-01-26 21:56:51 152

原创 Linux如何安装宝塔Linux面板

引言大家使用云服务器一定有大多数都用的系统镜像一般都是Linux系统,而且大家第一使用linux系统一定都很懵逼吧,所以为了方便大家更加方便的使用linux系统,网上便有了非常的多面板管理和维护Linux系统,下面我就通过网上比较主流的宝塔面板来给大家演示如何安装宝塔Linux面板。宝塔Linux面板简介宝塔面板主要用于管理、维护服务器使用,是一款服务器管理软件,支持 windows和linux系统,通过浏览器管理服务器,比如创建新网站、FTP、数据库等,具有可视化环境软件管理、可视化CPU、内存

2021-01-25 21:57:09 704

原创 使用putty工具连接远程ECS云服务器

引言有了云服务器我们应该怎么远程访问呢?下面我就为大家介绍一些大家常用的云服务器远程连接工具Putty简介Putty是一个非常轻便的云服务器远程连接工具安装Putty大家可以通过直接百度或谷歌等搜索引擎搜索putty并下载下来连接远程ECS云服务器下载好软件后打开软件在这里输入ECS服务器的公网地址然后点击打开。然后在输入用户名,一般来说默认用户名是root如果你设置过的就填设置的用户名。输入用户名后会要求输入密码,密码输入的时候是不可见的,也就是说输入密码的时候光标不会移动。

2021-01-24 12:43:22 599

原创 免费体验阿里云ECS云服务器

引言大家在第一次接触ECS服务器的时候一定一脸懵逼吧,对此阿里云为大家特地提供了云服务的一些基础操作的体验平台,让大家对ECS服务器不再陌生,下面就跟着我的博客一起学习吧!ECS云服务器新手上路通过阿里云提供的免费一小时体验阿里云ECS云服务器服务,远程登陆ECS实例,并部署应用。然后,登陆管理控制台,并对这台ECS实例进行管理操作。开始体验首先通过阿里云ECS服务器体验链接进入体验页面,点击开始体验即可进入体验环节(友情提醒:需要登录阿里云账号才能体验哦)实践操作进入后大家即可按照官

2021-01-23 15:36:23 1053

原创 阿里云ECS7天实践训练营Day2

ESC服务器的购买与准备进入官网登录阿里云账号购买服务器这里可以选择一键购买或者自定义购买一键购买直接进行简单的选择后购买即可自定义购买可以更加精细化的选择自己的配置。基础配置:可以设置付费模式、地域及可用区、实例、镜像、储存、快照服务。网络和安全组:可以设置网络、公网IP、带宽计费模式、安全组、弹性网卡、IPv6。系统配置:可以设置登录凭证、密钥对、实例名称、描述、主机名、有序后缀、实例RAM角色、实例自定义数据。分组设置:可以设置标签、资源组、部署集、专有宿主机。E

2021-01-22 21:52:15 126

原创 阿里云ECS7天实践训练营Day1

阿里云云服务器ECS介绍传统服务器定义传统服务器成本高运维难扩展难安全性差云服务器ECS定义阿里云服务器稳定弹性高安全高性能易用性可拓展性综上所述END传统服务器定义即物理机,简单的可以把它理解为一台“电脑”,所有网站的程序都在这个“电脑”上运行;传统服务器成本高对于有一定规模的公司来说,采购服务器需要经历询价、采购、还包括后续零件损害需要更换的成本及日常维护等众多环节,任何一个环节都费时费力,而且采购成本十分高昂,需要极大的人力成本投入;传统物理服务器想找到低配的,那是很难的,即便是低配的,价格

2021-01-21 21:35:43 297

原创 学生成绩管理系统-Python tkinter图形化界面+mysql+柱状图

通过python图形化界面和数据库实现学生成绩管理系统实现功能大概如下:基本功能增删改查限制成绩在各种情况下只能为0-100实现成绩的统计功能(柱状图显示)筛选各个成绩区间的学生信息实现排序功能登录注册功能对各种错误进行捕获项目部分效果展示登录注册模块代码from database import *from win import *class Login: def __init__(self): """创建登录界面""" sel.

2020-05-12 00:02:05 21919 28

原创 酒店管理系统--C语言版

本项目内容为酒店管理系统的C语言单链表实现版本大一答辩项目内容概括基本的增删改查对所有的输入都有容错性的提示通过messagebox所有提示类信息以弹窗显示实现文件储存操作实现管理员和用户端口分离实现订房退房及退房后金额结算操作提醒用户退房使用方向键控制光标移动选择你想要执行的选项只要预定时间不一致同一个房间可以有多人预定含有查重以及各种输入位数与格式的限制项目部分...

2020-02-17 12:06:47 4015 5

原创 C语言简易实现KMP算法(改进版)

本文主要通过C语言实现KMP算法改进版并讲其实现原理KMP算法简介KMP是一种改进的字符串匹配算法由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,相比较传统的依次进行的字符匹配做出了相应的改进如在字符串S="dddsafdsf"中匹配字符串T="dds"传统方法:从S的第一个字符"d"开始匹配显然s的第一个字符等于T的第一个字符,所以将S的第二个字符与T的第二个字符相比较...

2020-02-16 10:09:44 1044

空空如也

空空如也

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

TA关注的人

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