自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 回文数的非字符串解法

9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。代码如下:class Solution { public boolean isPalindrome

2020-12-17 19:55:52 132

原创 教你如何打家劫舍

198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示

2020-12-14 17:24:21 137

原创 归并排序的思想解决逆序对和翻转对问题

剑指 Offer 51. 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5代码如下://通用解法: 归并排序。时间复杂度高。class Solution { public int reversePairs(int[] nums) { if (nums == null || nums.length == 0) return 0;

2020-11-29 14:13:36 281 2

原创 最短超串(滑动窗口解法)

面试题 17.18. 最短超串假设你有两个数组,一个长一个短,短的元素均不相同。找到长数组中包含短数组所有的元素的最短子数组,其出现顺序无关紧要。返回最短子数组的左端点和右端点,如有多个满足条件的子数组,返回左端点最小的一个。若不存在,返回空数组。示例 1:输入:big = [7,5,9,0,2,1,3,5,7,9,1,1,5,8,8,9,7]small = [1,5,9]输出: [7,10]示例 2:输入:big = [1,2,3]small = [4]输出: []代码如

2020-11-26 19:28:43 375

原创 字符串中找出连续最长的数字串(双解法)

字符串中找出连续最长的数字串 读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例1输入abcd12345ed125ss123456789输出123456789代码如下:/**通过遍历判断元素是不是数字,如果是数字,用StringBuilder加上,然后看后续是不是有数字串,如果有比较大小,在这代码中要注意最后一次,如果是以数字结尾就要判断.

2020-11-26 19:28:02 392

原创 连续数组 java解法

525. 连续数组给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。注意: 给定的二进制数组的长度不会超过50000。方法一:暴力法public class Solution { public int findMaxLe

2020-11-24 15:55:04 282

原创 数组中的逆序对java解答

剑指 Offer 51. 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5代码如下:class Solution { int res; public int reversePairs(int[] nums) { int len = nums.length; if (len == 0 || nums == nul

2020-11-24 00:20:59 201

原创 最常见的单词(详细解)

819. 最常见的单词给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。示例:输入: paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."banned = ["hit"]输出: "ball"解释:

2020-11-23 17:02:42 117

原创 设计哈希映射(详解)

706. 设计哈希映射不使用任何内建的哈希表库设计一个哈希映射具体地说,你的设计应该包含以下的功能put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。remove(key):如果映射中存在这个键,删除这个数值对。示例:MyHashMap hashMap = new MyHashMap();hashMap.put(1, 1); hashMap.p

2020-11-23 16:15:53 705

原创 设计哈希集合(详细解释)

705. 设计哈希集合不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值。contains(value) :返回哈希集合中是否存在这个值。remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。示例:MyHashSet hashSet = new MyHashSet();hashSet.add(1); hashSet.add(2); hashSet.

2020-11-23 16:14:01 509

原创 寻找第K大(多种解法以及扩展思维)

寻找第K大 题目描述有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。示例1输入[1,3,5,2,2],5,3返回值2代码如下:import java.util.*;//有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。//给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。/** * findKth:.

2020-11-21 00:42:00 258

原创 最长公共子串(两种解法)

最长公共子串题目描述给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。示例1输入"1AB2345CD","12345EF"返回值"2345"备注:1 ≤∣str1∣,∣str2∣≤5000代码如下:import java.util.*;public class Solution { /** * longest common substring * @param str1 string字符串 the s

2020-11-19 22:49:22 3102

原创 前K个高频单词(详细代码解答)

692. 前K个高频单词给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 注意,按字母顺序 "i" 在 "love" 之前。示例 2:输入: ["the", "

2020-11-17 19:21:27 350 1

原创 树的子结构和树的子树的区别

另一个树的子树剑指 Offer 26. 树的子结构以上题来源:力扣这两道题的区别:首先我们要区分这两者的区别,那么就好理解了树的子结构:B是A的子结构, 即 A中有出现和B相同的结构和节点值。(约定空树不是任意一个树的子结构)例如:给定的树 A: 3/ \4 5/ 1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。另一个树的子树:示例 1:给定的树 s: 3/ \4 5/ 1 2给定的树 t

2020-11-16 21:35:58 334

原创 根据一棵树的中序遍历与后序遍历构造二叉树(超简单理解)

根据一棵树的中序遍历与后序遍历构造二叉树。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode buildTreeChild(int[] i

2020-11-16 21:12:11 879

原创 根据一棵树的前序遍历与中序遍历构造二叉树(超简单)

根据一棵树的前序遍历与中序遍历构造二叉树。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { int preIndex = 0; public TreeNode

2020-11-16 20:27:52 552

原创 Collection和Collections 、Set和ListArray 、List和LinkedList和Vector区别

Collection和Collections区别Collection 是一个集合接口。 它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。是list,set等的父接口。Collections 是一个包装类。 它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。Set和List区别?List,Set都是继承自Collection接口。都是用来存储一组相同类型的元素的。List特点:元

2020-11-07 15:18:35 125 1

原创 mysql数据库(概念及其最基础语法)

mysql数据库01存储数据用文件就可以了,为什么还要数据库?文件保存数据有以下几个缺点:文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便客户端与服务端都是相对的概念web服务器:提供web服务的应用程序数据库服务器:提供数据存储操作(CRUD)的应用程序可能的问题:关系型数据库和非关系型数据库的区别+代表产品关系型数据库:是指采用了关系模型来组织数据的数据库。基于标准的SQL,只是内部一些实现有区别,常用的关系型数据库有:Oracle,MyS

2020-10-30 17:10:16 82

原创 String、StringBuilder与StringBuffer的细节区别

String、StringBuilder与StringBuffer的区别**重要:**任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。可变性String类中使用final关键字的数组(根据版本有所区分,JDK8及以前用char数组,之后用byte数组)来保存字符串,所以String对象是不可变的。StringBuffer和StringBuilder都继承了AbstractStringBuilder类,在AbstractStri

2020-10-30 16:41:38 62

原创 认识异常(比较简单)

认识异常(比较简单)捕获异常try{有可能出现异常的语句 ;}[catch (异常类型 异常对象) {} ... ][finally {异常的出口}]try 代码块中放的是可能出现异常的代码.catch 代码块中放的是出现异常后的处理行为.finally 代码块中的代码用于处理善后工作, 会在最后执行.其中 catch 和 finally 都可以根据情况选择加或者不加.关于 "调用栈"方法之间是存在相互调用关系的, 这种调用关系我们可以用 “调用栈” 来描述. 在 JVM 中有

2020-10-29 14:42:56 65

原创 面向对象的三大特征(水)

面向对象的三大特征封装继承多态封装封装的本质就是让类的调用者不必太多的了解类的实现者是如何实现类的, 只要知道如何使用类就行了.特点:1.提高安全性​ 2.提高重用性隐藏内部实现​ 3.方便调用继承继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。特点:1.方便代码重用2.耦合性增强,安全性减弱注意事项:1.子类继承了父类的什么东西? 答:除构造方法外所有东西(私有的东西不能在子类访问)2.子

2020-10-28 21:23:51 88

原创 抽象类和接口的区别(超级超级详细)

抽象类和接口的区别!抽象类:1、包含抽象方法的类,抽象类。使用abstract关键字来修饰的2、抽象方法是不能够有具体的实现的。3、在抽象类当中,可以定义和普通类相同的数据属性和方法4、抽象类不能够进行实例化.5、问题:那么抽象类存在的意义是什么?既然不能够进行实例化 答案:抽象类存在的最大意义就是为了被继承.6、一个普通类继承了这个抽象类之后,一定要重写,抽象类的抽象方法7、如果一个类,继承了抽象类但是又不想重写这个抽象方法,那么就把这个类也设置为抽象类,但是迟早都要重写的。8、抽

2020-10-28 21:16:33 359

原创 链表之双向链表(有头and无头)

链表之双向链表话不多说,直接看代码,你懂的!!!!!!无头双向链表的定义:class ListNode { public int val; public ListNode next; public ListNode prev; public ListNode(int val) { this.val = val; }}public class DoubleList { public ListNode head; public

2020-10-26 22:00:58 421

原创 链表之无头单向非循环链表

链表之无头单向非循环链表链表的概念及结构链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:1.单向、双向2.带头、不带头3.循环、非循环主要掌握两种:无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。无头双向链表:在Java的集合框架库中LinkedList底层实现就是无头双向循环链表

2020-10-25 20:23:42 167

原创 二进制转化为十进制的深程刨析

二进制转化为十进制的深程刨析:(位运算符)public int getDecimalValue(ListNode head) { ListNode cur = head; int ans = 0; while (cur != null) { ans <<= 1; ans += cur.val; cur = cur.next; } return

2020-10-22 22:15:07 91

原创 Arrays类的自我详解01

Arrays类的自我详解以下以整型为例:copyOfpublic static int[] copyOf(int[] original, int newLength)复制指定的数组,用零截取或填充(如有必要),以便复制具有指定的长度。 对于原始数组和副本都有效的所有索引,两个数组将包含相同的值。 对于在副本中而不是原件有效的任何索引,副本将包含0 。 当且仅当指定长度大于原始数组的长度时,这些索引才会存在。参数original -

2020-10-21 21:01:53 74

原创 找出单向链表中倒数第 k 个节点。返回该节点的值

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的 k 保证是有效的。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */clas

2020-10-20 21:41:15 384

原创 顺序表的学习详细过程

顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。public class MyArrayList { public int[] elem;//数组 public int usedSize;//有效数据的个数 public MyArrayList() { this.elem = new int[10]; this.usedSize = 0; } publi

2020-10-20 19:52:07 134

原创 时间复杂度和空间复杂度(简单)

时间复杂度和空间复杂度分析算法时,存在几种可能的考虑:算法完成工作最少需要多少基本操作,即最优时间复杂度算法完成工作最多需要多少基本操作,即最坏时间复杂度算法完成工作平均需要多少基本操作,即平均时间复杂度大O表示法大O符号(Big O notation):是用于描述函数渐进行为的数学符号。推导大O阶方法:1、用常数1取代运行时间中的所有加法常数。2、在修改后的运行次数函数中,只保留最高阶项。3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。算法效率算

2020-10-19 18:00:39 97

原创 类和对象的个人详细总结

类和对象的精华:引用类型:int[] array = new int[10] ; 引用: 真实的地址的哈希值 唯一的null:当前引用,不指向任何对象jvm内存: 5jvm栈 本地方法栈(native:C/C++ 速度快) 堆(对象) 方法区 程序计数器数组的拷贝:4for Arrays.copyOf(int[] orignal, int newlength);//intSystem.arraycopyof(); 5个参数 没有返回值 nativ

2020-10-18 22:31:06 63

原创 类和对象的刨析(二)

封装在我们写代码的时候经常会涉及两种角色: 类的实现者和类的调用者.封装的本质就是让类的调用者不必太多的了解类的实现者是如何实现类的, 只要知道如何使用类就行了.这样就降低了类使用者的学习和使用成本, 从而降低了复杂程度.private实现封装private/ public 这两个关键字表示 “访问权限控制” .被 public 修饰的成员变量或者成员方法, 可以直接被类的调用者使用.被 private 修饰的成员变量或者成员方法, 不能被类的调用者使用.getter和setter方法al

2020-10-18 22:30:25 83

原创 类和对象的刨析(一)

类和对象详情看20201017 一定要理解(内存)类和类的实例化基本语法// 创建类class <class_name>{field;//成员属性method;//成员方法}// 实例化对象<class_name> <对象名> = new <class_name>();class Person { public int age;//成员属性 实例变量 public String name; public String se

2020-10-17 23:43:14 99 1

原创 数组的个人详解

数组图解在20201015平时所提到的栈就是:java虚拟机栈,存放局部变量局部变量:定义在方法内的变量就是局部变量数组是对象,对象都在堆上数据类型:基本数据类型、引用数据类型java当中都是按值传递,但是这个“值”要注意,可能是简单类型,也可能是引用类型。只要引用是null,就不能使用它做任何事情。什么是数组数组本质上就是让我们能 “批量” 创建相同类型的变量.注意事项: 在 Java 中, 数组中包含的变量必须是 相同类型.创建数组// 动态初始化数据类型[] 数组名称 = n

2020-10-16 21:35:49 76

原创 递归的(个人)超详细讲解

递归理解递归:1.调用自己本身2.有一个趋近与终止的条件图解看20201014个人注意事项:不要尝试展开代码思考递归:横向思考代码执行:纵向执行把大事化小事,但是大事和小事处理的方式是一样的栈里面放数据,先进后出示例//按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) 递归求解public class TestDemo01 { public static void main(String[] args) { int a

2020-10-15 17:18:27 131

原创 方法的使用(no递归)

方法的使用提醒一下:(赋值运算符可以不用强制类型转换)方法定义语法// 方法定义public static 方法返回值 方法名称([参数类型 形参 ...]){方法体代码;[return 返回值];}// 方法调用返回值变量 = 方法名称(实参...);注意事项public 和 static 两个关键字在此处具有特定含义,方法定义时, 参数可以没有. 每个参数要指定类型方法定义时, 返回值也可以没有, 如果没有返回值, 则返回值类型应写成 void方法定义时的参数称为 “形参

2020-10-14 23:28:04 53

原创 逻辑控制(超详细)

逻辑控制补充重点:一个类会生成一个字节码文件,不是一个java文件生成一个字节码文件,好处是什么? 随取随用分支机构if 语句基本语法形式1if(布尔表达式){//条件满足时执} if(布尔表达式){//条件满足时执行代码}else{//条件不满足时执行代码} if(布尔表达式){//条件满足时执行代码}else if(布尔表达式){//条件满足时执行代码}else{//条件都不满足时执行代码}注意事项 悬垂 els

2020-10-13 00:01:20 1742

原创 进制的转换(Java)

给定一个十进制整数, 如何转成二进制形式? 如何转成十六进制形式?String str = ""; while (true) { str = a % n+ str; a = a / n; if (a == 0) break; }a为传进去的十进制整数,n为你需要转换的进制(不能是16进制)可以是二进制和8进制,2进制 只有0和1组成       

2020-10-10 17:18:56 145

原创 运算符的基本知识(java)

运算符的基本知识1.1算术运算符基本四则运算符 + - * / %注意除法:int / int 结果还是 int, 需要使用 double 来计算.int a = 1;int b = 2;System.out.println(a / b);// 结果为 00 不能作为除数(ArithmeticException)% 表示取余, 不仅仅可以对 int 求模, 也能对 double 来求模System.out.println(11.5 % 2.0);// 运行结果1.5增量赋值运

2020-10-10 17:16:36 95

原创 变量的基本知识点(java)

变量的基本知识点变量指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据.类型则是对变量的种类进行了划分, 不同的类型的变量具有不同的特性.1.1 整形变量(在 Java 中, 一个 int 变量占 4 个字节,包装类为Integer)4 个字节表示的数据范围是 -2^31 -> 2^31-1 , 也就大概是 -21亿 到 +21亿.基本的语法格式:int 变量名=初始值;//示例int num=12;//定义一个整形变量System.out.println(num)

2020-10-10 16:12:58 337

空空如也

空空如也

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

TA关注的人

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