- 博客(28)
- 收藏
- 关注
原创 链表(删除重复的节点)
/* 题目要求:* 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,* 重复的结点不保留,返回链表头指针。* 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5* */题解:先判空和长度是否为一定义两个指针和一个傀儡节点用cur当游标遍历链表,①当cur的值和cur.next的值相等时,prev不动,cur指向他的下一个直到cur的值不等于cue.next 退出循环prev.next = cur.nex
2021-03-16 13:57:02 142
原创 链表(找出环的入口)
题目:找出链表中环的开始位置题解:使用快慢指针,当快指针不为空时,①快指针走两步,慢指针走一步②判断是否相遇相遇的话,让快指针从头再和慢指针一块走,直到相遇 /*链表中环的入口 * 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 * */ public ListNode EntryNodeOfLoop(ListNode pHead) { if(pHead == null || pHead.next == null) {
2021-03-16 13:42:32 195
原创 数据库习题
题目描述有一个员工表employees简况如下:有一个薪水表salaries简况如下:请你查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为(注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salaries表的最新的to_date!=‘9999-01-01’,这样的数据不显示在查找结果里面,以上emp_no为2的就是这样的)sele
2021-03-15 08:45:51 633
原创 美团笔试题(10.1淘汰分数)
淘汰分数题意:划定一个分数线,大于这个分数的选手晋级,其他的选手就淘汰要求:n名选手,要求找出一个最低分数m,按分数划分成晋级和淘汰两波人,并且这两波人人数都在[x,y]区间内思路:要求按成绩划分,肯定得先将n名选手成绩放入数组并按由低到高排序, 遍历数组将成绩放入栈中,并判断当前栈的大小是否满足[x,y] 当前数组剩余元素个数是否满足[x,y],如果都满足,直接结束循环,否则继续放如栈中。 最后判断跳出循环是因为break还是循环结束(栈中元素个数),如果是因为break,那么直接弹出栈顶元素,得到
2021-03-14 12:00:31 1787 4
原创 美团笔试题(10.2正则序列)
正则序列题意是:第一行手动输入一个整数n,代表数组长度,第二行输入n个整数,要将这n个数调整为1~n问:最少需要调整多少次?思路:问次数时,可以定义一个计数器来保存答案,要调整为一个有序数组,先将其升序排序,再遍历数组,因为最终结果是从1开始连续的n个数,则可按数组索引加一为参照,依次比较数组中每个数,当数组中的数小于数组索引加一时,数组中的数值自增一直到相等,每自增一次计数器加一,当数组中的数值大于索引加一时,数值自减一直到相等,每自减一次计数器加一,最终输出计数器即可import java.u
2021-03-13 22:03:25 820
原创 习题(翻转链表)
输入一个链表,反转链表后,输出新链表的表头。输入:{1,2,3} 输出:{3,2,1}思路:相当于遍历原链表,将遍历到的每个节点采用头插法插入到新链表;prev 为新链表头cur 从头开始遍历curNext 记录cur下一个节点每在prev前插入一个节点,prev就向前移动成为新头时间复杂度和空间复杂度都为O(N)/*class ListNode { int val; ListNode next = null; ListNode(int val) {
2021-03-13 11:09:04 82
原创 HTTP响应状态码
2.1,状态码告知状态码的职责就是描述返回的结果,通过结果用户就可以指导是否请求成功。状态码的类别2.2 2XX 成功2.2.1 200 ok表示客户端发送的消息被服务器端正常处理了。在响应报文中,响应信息随着方法的不同会发生改变,使用GET方法会返回对应的请求资源实体,而使用HEAD方法,就不会返回实体。2.2.2 204 NOT FOUND该状态码表示客户端请求处理成功,但是在返回的响应报文中不含实体的主体部分。这个状态多出现在客户端向服务器发送信息,而服务器端不进行信息返回。
2021-03-12 23:40:14 167
原创 七种排序算法性能分析
排序方法最好时间复杂度平局时间复杂度最坏时间复杂度空间复杂度稳定性特点插入排序O(N)O(N^2)O(N^2)O(1)稳定越有序越快希尔排序O(N)O(N^1.3)~ O(N^1.5)O(N^2)O(1)不稳定分组,缩小增量选择排序O(N^2)O(N^2)O(N^2)O(1)不稳定堆排序O(N*log(N))O(N*log(N))O(N*log(N))O(1)不稳定冒泡排序O(N)O(N^2)O(N^...
2021-03-11 20:42:13 110
原创 快速排序的优化
1.递归的快速排序优化第一种优化思想:1.首先快速排序对于大量数据比如以万为计量单位,那么快排的时间复杂度和空间复杂度都是相对于其他几个排序都是最好的,那么对于少量数据比如10个,100个,快速排序显然已经不是最好的了;2.那么快速排序每次经过找基准,这样数据就在慢慢趋于有序,这个时候当low和high之间的数据小于一个给定的值的时候,比如100,我们就可以之间调用之间插入排序来进行排序;public static void quick(int[] arr,int low,int high){
2021-03-11 20:25:21 1708
原创 归并排序
归并排序如下图:先分割,在合并;//归并排序 public static void mergesort(int[] arr){ mergeSortInternal(arr,0,arr.length-1); } //分割 public static void mergeSortInternal(int[] arr,int low,int high){ if(low >= high){ return;
2021-03-11 20:18:42 75
原创 交换排序 (冒泡排序和快速排序)
1.冒泡排序原理:在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序。稳定性(稳定) 1.一个稳定的排序可以变成不稳定的排序; 2.一个本身就不稳定的是不可能变成稳定的;空间复杂度:O(1)时间复杂度:最好情况O(n);最坏情况O(n^2)//冒泡排序 public static void bubbleSort(int[] arr){ for (int i = 0;i < arr.length-1;i++){//控制冒
2021-03-11 20:16:42 74
原创 选择排序 (选择排序和堆排序)
1.选择排序原理:每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后(或最前),直到全部待排序的数据元素排完 。稳定性(不稳定) 1.一个稳定的排序可以变成不稳定的排序; 2.一个本身就不稳定的是不可能变成稳定的;空间复杂度:O(1)时间复杂度:O(O(n^2))public static void selectsort(int[] arr){ for (int i =0;i < arr.length;i++){ for (in
2021-03-11 20:12:14 153
原创 插入排序(直接插入排序和希尔排序)
一.基本概念1.概念:排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时的上下文中,如果提到排序,通常指的是排升序(非降序)2.稳定性两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。下面用一个简单图给大家说明一下:图中给的数据有俩个3,如果排序之后,黑3还在红3之后,那么这样的排序就是稳定的,否则就是不稳定的。3.Java常见排序二.具体排序代码实现1.直接插入排序稳定性(稳定):稳定性排
2021-03-11 20:04:17 279
原创 排序(二) 希尔排序
希尔排序:分组,缩小增量/** 希尔排序* 不稳定排序* 时间复杂度:O(n^1.3)~O(n^1.5)* 空间复杂度:O(1)* 特点:分组,减小增量* */ private static void shell(int[] array, int gap) { for (int i = gap; i < array.length; i++) { int temp = array[i]; int j =
2021-03-11 19:46:54 84
原创 排序 (1)直接插入排序
直接插入排序:```javapublic static void insertSort(int[] array) { for (int i = 1; i < array.length; i++) { int temp = array[i]; int j = i - 1; for (; j >= 0; j--) { if (array[j] > temp) {
2021-03-11 19:42:19 102
原创 返回输入字符串中最长连续数字串
输入一行字符,输入如:as1561d1231d5645613sd564513213213输出 结果为 :564513213213public static void main(String[] args) {// 输出字符串中最长连续数字串 Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String str = sc.nextLine();
2021-03-02 21:35:26 327
原创 变强日记第十一篇MySQL数据库(一)
数据库是用来存储数据的,存储介质一般为磁盘和内存。一、存储数据用文件夹的几个缺点,也就是数据库的优点:1.安全性问题2.不利于查找和管理3.不利于存储海量数据4.文件在程序中不方便二、数据库的分类数据库分为关系型数据库(RDBMS)和非关系型数据库**关系型数据库:**采用了关系模型来组织数据的数据库,如:1.Oracle数据库适用于做大型项目,做复杂一点的数据处理,如 ERP,OA等企业信息系统,收费等。2.MySQL数据库适用于简单项目,特点:开源免费3.SQL Serve.
2021-02-27 18:59:32 89
原创 变强日记第十篇 String类的使用
String类1.字符串的创建1.1常见的构造方法创建字符串2.字符串比较相等2.1 通过(==)比较2.1 通过(equals)比较3.字符、字节与字符串3.1 字符与字符串3.1.1构造方法3.1.2方法3.2 字节与字符串3.2.1构造方法3.2.2 方法3.3 小节4.字符串常用操作4.1 比较字符串4.2 查找字符串4.3 字符串替换4.4 字符串拆分4.5 截取字符串4.6 字符串其他方法5. StringBuffer 和 StringBuilder1.字符串的创建1.1常见的构造方法创建字
2020-10-31 15:14:23 657
原创 变强日记第九篇 异常处理
异常处理1、什么是异常1.1认识异常1.2防御式编程1.3异常的好处2、Java中异常的体系2.1Throwable2.2Exception类2.2.1 RuntimeException (运行时异常)2.2.2 IOException (输入输出异常)2.2.3 ClassNotFoundException (未找到类异常)2.2.4 CloneNotSupportedException (不支持克隆异常)3、异常的基本用法3.1 捕获异常3.2 异常处理流程3.3 抛出异常3.4 异常说明3.5 关于f
2020-10-29 16:57:57 82
原创 小项目 图书管理系统
第一个小项目 图书管理系统1.需求2.再确定对象3.然后实现功能1.需求1.简单登录2、管理端2.1整理书籍(该功能为可扩展功能)2.2查阅书籍2.3增加书籍2.4删除书籍2.5打印书籍列表2.6退出3、用户端3.1查询书籍3.2借阅书籍3.3归还书籍3.4退出2.再确定对象1.书1.1书本1.2书架2.增删改查功能3.用户3.1管理员3.2普通用户3.然后实现功能package book;public class Book { private
2020-10-28 18:06:46 145
原创 变强日记第八篇 顺序表
// 顺序表public class TestDemo { private int[] array;//数组 private int useSize;//有效值 public int getUseSize() { return useSize; } public void setUseSize(int useSize) { this.useSize = useSize; } public int[] getArra
2020-10-20 21:00:26 69
原创 变强日记第七篇 类和对象
类和对象1.认识类和对象1.1OOP三大特征1.1.1封装1.1.2继承1.1.3多态1.2类的实例化(也就是对象)1.2.1实例化语法1.2.2代码块1.2.2.1什么是代码块1.2.2.1构造代码块1.2.2.2静态代码块1.认识类和对象1.1OOP三大特征oop: 就是面向对象,我们都知道,Java是面向对象语言,面向对象关注的是对象,将一件事拆分成不同的对象,靠对象来完成交互,通过一个个逻辑将对象连接起来从而达到某种目的。举个栗子:就好比洗衣服来说,面向过程就是:找盆->加水 -&g
2020-10-18 20:18:07 338 1
原创 变强日记第六篇 数组
数组1.什么是数组1.1数组的定义1.2数组的输出2.数组的使用3.来上点才艺吧,做两个题试试学会了没!1.什么是数组可以把数组理解成是一个容器举个栗子:衣柜可以放衣服,橱柜可以放盘子,容器装的东西要符合一定的规则,就像衣柜里放盘子,橱柜里放衣服就很不符合逻辑,数组也是一样。1.1数组的定义整型:静态初始化:int[] 数组名称 = {元素1,元素2,元素3…元素n};动态初始化int[] 数组名称 = new int[数组大小];int[] 数组名称 = new int[] {元素
2020-10-16 17:24:34 190 1
原创 变强日记第五篇 方法的使用
方法的使用1.方法的基本用法1.1初识方法1.2方法定义语法1.3 方法标签2.方法重载2.1 什么是方法重载3.方法递归3.1 什么是方法递归3.2 举个栗子,用方法递归求N的阶乘1.方法的基本用法1.1初识方法简单来说,方法就类似于数学中解决问题的公式是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使用, 一份代码可以在多个位置使用.让代码更好理解更简单.直接调用现有方法开发, 不必重复造轮1.2方法定义语法修饰符 + 返回值类型+ 方法名(参数列表){//方法
2020-10-15 20:09:59 92
原创 变强日记第四篇 进制转换
进制转换进制转换1.十进制—>二进制2.十进制—>八进制3.十进制—>十六进制进制转换如何将十进制整形数据转换为二进制、八进制、和十六进制1.十进制—>二进制用十进制数除以2,将余数逆序排列例如:十进制10的二进制表示为0000 1010同理可以得出十进制25的二进制表示为0001 10012.十进制—>八进制第一种方法和转二进制一样,不过这种方式容易出错,所以我们还是先将十进制数转换为为二进制数,然后将二进制数转换为八进制数例如: 十进制25 的 二进制表
2020-10-11 10:55:57 273
原创 变强日记第三篇 运算符
运算符1.算术运算符1.1 int / int (结果还是int)1.2 取余 %,对int 和 double 型数据都适用1.3增量赋值运算符(+= 、-=、*=、/=、%=)1.4自增、自减运算符 (++i,i++,--i,i--)2.关系运算符3.逻辑运算符(敲黑板!!)4.位运算符5.条件运算符6.运算符优先级1.算术运算符这个很简单,就是算术上的四则运算+、-、*、/、%,但是值得注意的是除法(/)和 取余(%)1.1 int / int (结果还是int)int a = 1; int
2020-10-11 10:27:44 284 2
原创 变强日记第一篇 初识Java
1.初识Java1.Java语言的特性2.Java开发环境的安装1.Java语言的特性1.1简单性Java语法是C++语法的一个“纯净版本”。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符 重载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境。1.2面向对象性Java的面向对象特性与C++旗鼓相当,与C++的主要不同点在于多重继承。在Java中,取而代之的是更简单的接口概念。而且与C++相比,Java提供了更丰富的运行时自省功能。1.3 分布式
2020-10-11 10:14:33 203
原创 变强日记第二篇 变量与数据类型
数据类型与运算符1.变量变量是程序在运行过程中可以改变的量类型有8中基本数据类型和引用类型所有的变量在使用前都要进行初始化,否则编译会报错!!!!1.1 八种基本类型boolean型数据没有具体的大小,在一个字节和一个bit之间选择bit1.1.1字节型变量语法格式byte 变量名 = 初始值;代码示例:byte num = 20;System.out.println(num);1.1.2短整型变量语法格式short 变量名 = 初始值;代码示例:short num
2020-10-11 08:33:32 119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人