- 博客(64)
- 收藏
- 关注
原创 Java 接口思想、多态、内部类
Java 接口思想接口的使用思想多态概念多态的使用细节内部类接口的使用思想狭义思想:接口是对功能的扩展;广义思想:接口是对外暴露的规则;多态概念概念:多态是指事物的多种形态。在java中最常见的两种多态形式: 1)方法的重载:方法的多态,一个方法的多种形态; 2)对象的多态:父类或接口的引用指向子类或实现类的对象;一般说的多态是指对象的多态;多态的前提是必须有继承或实现的关系;在编程中遇到方法参数列表中有接口类型,但是可以传递实现类对象的原
2020-10-31 11:01:52 269
原创 Leetcode 696. 计数二进制子串
Leetcode 696. 计数二进制子串计数二进制子串给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(
2020-10-30 20:58:33 116
原创 Leetcode 551. 学生出勤记录 I
Leetcode 551. 学生出勤记录 I学生出勤记录 I给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:'A' : Absent,缺勤'L' : Late,迟到'P' : Present,到场如果一个学生的出勤记录中不超过一个’A’(缺勤)并且不超过两个连续的’L’(迟到),那么这个学生会被奖赏。你需要根据这个学生的出勤记录判断他是否会被奖赏。示例 1:输入: “PPALLP”输出: True示例 2:输入: “PPALLL”输出: Falsecla
2020-10-30 19:17:03 95
原创 Leetcode 657. 机器人能否返回原点
Leetcode 657. 机器人能否返回原点机器人能否返回原点在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此
2020-10-30 19:05:39 177
原创 Leetcode 423. 从英文中重建数字
Leetcode 423. 从英文中重建数字从英文中重建数字给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。注意:输入只包含小写英文字母。输入保证合法并可以转换为原始的数字,这意味着像 "abc" 或 "zerone" 的输入是不允许的。输入字符串的长度小于 50,000。示例 1:输入: “owoztneoer”输出: “012” (zeroonetwo)示例 2:输入: “fviefuro”输出: “45” (fourfive)c
2020-10-30 18:55:31 141
原创 Leetcode 451. 根据字符出现频率排序
Leetcode 451. 根据字符出现频率排序根据字符出现频率排序给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:“tree”输出:“eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。示例 2:输入:“cccaaa”输出:“cccaaa”解释:'c’和’a’都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必
2020-10-30 16:25:45 200
原创 Java final关键字、抽象类、模板方法设计模式、接口interface
Java final关键字final关键字抽象类概念抽象类存在的意义抽象类的特点模板方法设计模式接口interface介绍接口的特点jdk8对接口的扩展final关键字1、被final修饰的类不能被继承;2、被final修饰的方法不能被重写;3、被final修饰的变量是常量,值不能被修改(一般会被定义为类成员);抽象类概念抽象方法:不具体的方法(只有方法声明部分,没有方法体的方法,使用abstract关键字修饰)public void test(){//具体方法,可直接调用 方法体;}
2020-10-29 20:41:05 321
原创 Leetcode 49.字母异位词分组
Leetcode 49.字母异位词分组字母异位词分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。class Solution { //利用数组,26个数据26个质数, public Li
2020-10-28 22:14:29 118
原创 Leetcode 242. 有效的字母异位词
Leetcode 242. 有效的字母异位词有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?class Solution { //利用数组来
2020-10-28 21:47:59 115
原创 Java 单例设计模式、继承、super关键字
Java 单例设计模式单例设计模式1、设计模式单例设计模式继承supe关键字方法的重写(覆盖)常见的面试题静态成员的继承单例设计模式1、设计模式 针对特定的问题提供的固定的最优的解决方案; 在面向对象的编程语言中有23中设计模式;单例设计模式 确保唯一性; 拿到某个类的对象,始终是同一个对象,多个对象引用的引用地
2020-10-28 21:05:20 239
原创 Leetcode 383.赎金信
Leetcode 383.赎金信赎金信给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)注意:你可以假设两个字符串均只含有小写字母。canConstruct(“a”, “b”) ->
2020-10-28 11:47:41 230
原创 Leetcode 389.找不同
Leetcode 389.找不同找不同给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = “abcd”, t = “abcde”输出:“e”解释:‘e’ 是那个被添加的字母。示例 2:输入:s = “”, t = “y”输出:“y”示例 3:输入:s = “a”, t = “aa”输出:“a”示例 4:输入:s = “ae”, t = “aea”输出:“a”
2020-10-28 10:27:18 146
原创 Leetcode 387.字符串中的第一个唯一字符
Leetcode 387.字符串中的第一个唯一字符字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2提示:你可以假定该字符串只包含小写字母。class Solution { public int firstUniqChar(String s) { int len = s.length(); if(len
2020-10-28 10:11:09 103
原创 Leetcode 151.翻转字符串里的单词
Leetcode 151.翻转字符串里的单词翻转字符串里的单词给定一个字符串,逐个翻转字符串中的每个单词。说明:无空格字符构成一个 单词 。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。示例 1:输入:“the sky is blue”输出:“blue is sky the”示例 2:输入:" hello world! "输出:“world! hello”解释:输入字符串可以在前面或者
2020-10-27 19:45:33 148
原创 Leetcode 557.反转字符串中的单词 III
Leetcode 557.反转字符串中的单词 III反转字符串中的单词 III给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:“Let’s take LeetCode contest”输出:“s’teL ekat edoCteeL tsetnoc”提示:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。class Solution { public String reverseWords(String s)
2020-10-27 14:21:04 118
原创 Leetcode 541.反转字符串 II
Leetcode 541.反转字符串 II反转字符串 II给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例:输入: s = “abcdefg”, k = 2输出: “bacdfeg”提示:该字符串只包含小写英文字母。给定字符串的长度和 k 在 [1, 10000] 范围内。class
2020-10-27 10:52:04 384
原创 Leetcode 344.反转字符串
Leetcode 344.反转字符串反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,
2020-10-27 10:39:34 76
原创 Leetcode 58.最后一个单词的长度
Leetcode 58.最后一个单词的长度最后一个单词的长度给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: “Hello World”输出: 5class Solution { /** *利用双指针来确定最后一个单词的首尾 */ public int len
2020-10-27 10:33:54 116
原创 Leetcode 434.字符串中的单词数
Leetcode 434.字符串中的单词数字符串中的单词数统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: “Hello, my name is John”输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 “Hello,” 算作 1 个单词。class Solution { public int countSegments(String s) { int len = s.len
2020-10-26 21:37:04 182 1
原创 Java 构造函数、this、static、代码块
Java 构造函数、this、static构造函数(构造方法 构造器)this关键字static关键字构造函数(构造方法 构造器)1、对象的创建: 类名 对象名 = new 构造方法;2、当定义一个类时,即使类中什么内容都没有定义[指类中没有定义任何构造器的时候],编译器会默认给我们一个无参构造方法(默认无参构造器)。我们可以显示的定义出来 当我们给类定义了带参构造函数后,编译器就不再为我们提供默认的无参构造函数,我们再次使用无参构造函数时就
2020-10-26 20:39:33 370
原创 Leetcode 14.最长公共前缀
Leetcode 14.最长公共前缀最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。class Solution { /** *遍历字符串数组,以第一个为基准字符串 */ public
2020-10-26 19:20:28 69
原创 Leetcode 125.验证回文串
Leetcode 125.验证回文串验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: falseclass Solution { public boolean isPalindrome(String s) { //将所有字母进行大写转
2020-10-26 17:03:11 144
原创 Leetcode 520.检测大写字母
Leetcode 520.检测大写字母检测大写字母给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: “USA”输出: True示例 2:输入: “FlaG”输出: False注意: 输入是由大写和小写拉丁字母组成的非
2020-10-26 16:35:36 189
原创 Leetcode 238. 除自身以外数组的乘积
Leetcode 238. 除自身以外数组的乘积除自身以外数组的乘积给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以
2020-10-26 16:29:56 130
原创 Leetcode 301.二维区域和检索——矩阵不可变
Leetcode 301.二维区域和检索——矩阵不可变二维区域和检索 - 矩阵不可变给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。Range Sum Query 2D上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。示例:给定 matrix = [[3, 0, 1, 4, 2],[5, 6, 3, 2, 1],
2020-10-26 15:13:10 96
原创 Leetcode 303.区域和检索——数组不可变
Leetcode 303.区域和检索——数组不可变区域和检索 - 数组不可变给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], ... ,
2020-10-26 14:43:05 107
原创 Java 面向对象编程
Java 面向对象编程面向对象的介绍目前所有的高级编程语言,编程思想分为两种: 1)面向过程:面向过程针对的是过程,过程理解为步骤。完成一个功能都有一定的步骤,一步一步去完成。 2)面向对象:面向对象针对的是对象,具有特定功能的对象;然后拿到对象就可以使用对象完成相应的功能。面向对象思想再编程中的体现 将数据(属性)和功能分装到对象中,然后拿到对象,就可以使用对象持有的数据和功能完成相应的任务。面向对象思想在Java中的实现通
2020-10-25 20:08:16 130
原创 Leetcode 289.生命游戏
Leetcode 289.生命游戏生命游戏根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞
2020-10-24 16:01:54 167
原创 Leetcode 73.矩阵置零
Leetcode 73.矩阵置零矩阵置零给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]进阶:一个直接的解决方案是使用 O
2020-10-22 21:33:08 86
原创 Leetcode 48.旋转图像
Leetcode 48.旋转图像旋转图像给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[[ 5, 1, 9,11],[ 2, 4, 8,10]
2020-10-22 20:38:46 114
原创 Leetcode 566.重塑矩阵
Leetcode 566.重塑矩阵重塑矩阵在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:nums =[[1,2],[3,4]]r = 1, c = 4输
2020-10-22 20:19:03 135
原创 Leetcode 498.对角线遍历
Leetcode 498.对角线遍历对角线遍历给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。示例:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,4,7,5,3,6,8,9]解释:说明:给定矩阵中的元素总数不会超过 100000 。class Solution { public int[] findDiagonalOrder(int[
2020-10-22 20:07:44 176
原创 Leetcode 59.螺旋矩阵 II
Leetcode 59.螺旋矩阵 II螺旋矩阵 II给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]class Solution { public int[][] generateMatrix(int n) { int[][] sprial = new int[n][n]; int count =
2020-10-21 21:58:05 98
原创 Leetcode 54.螺旋矩阵
Leetcode 54.螺旋矩阵螺旋矩阵给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]class Solution
2020-10-21 20:47:12 80
原创 Leetcode 396.旋转函数
Leetcode 396.旋转函数旋转函数给定一个长度为 n 的整数数组 A 。假设 Bk 是数组 A 顺时针旋转 k 个位置后的数组,我们定义 A 的“旋转函数” F 为:F(k) = 0 * Bk[0] + 1 * Bk[1] + … + (n-1) * Bk[n-1]。计算F(0), F(1), …, F(n-1)中的最大值。注意:可以认为 n 的值小于 105。示例:A = [4, 3, 2, 6]F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3
2020-10-21 20:15:38 155
原创 Leetcode 189.旋转数组
Leetcode 189.旋转数组旋转数组给定一个数组,将数组中的元素向右移动 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 = 2输出: [3,99,-1,-100]解释:向右旋
2020-10-21 19:47:17 90
原创 Leetcode 419.甲板上的战舰
Leetcode 419.甲板上的战舰甲板上的战舰给定一个二维的甲板, 请计算其中有多少艘战舰。 战舰用 'X’表示,空位用 '.'表示。 你需要遵守以下规则:给你一个有效的甲板,仅由战舰或者空位组成。战舰只能水平或者垂直放置。换句话说,战舰只能由 1xN (1 行, N 列)组成,或者 Nx1 (N 行, 1 列)组成,其中N可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 - 即没有相邻的战舰。示例 :X…X…X…X在上面的甲板中有2艘战舰。无效样例 :.&nbs
2020-10-21 10:49:10 116
原创 Leetcode 598.范围求和 II
Leetcode 598.范围求和 II范围求和 II给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。示例 1:输入:m = 3, n = 3operations = [[2
2020-10-20 21:34:46 163
原创 Leetcode 661.图片平滑器
Leetcode 661.图片平滑器图片平滑器包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[0, 0, 0],[0, 0, 0],[0, 0, 0]]解释:对于点 (0,0), (0,2), (2,0), (2,2): 平均(3/4) =
2020-10-20 21:14:57 136
原创 Java 数组
Java 数组定义1、数组是个容器(堆中的一块空间,需要在堆中开辟一块空间new);2、数组可以同时存储同一类数据的多个数据(a、多个数据;b、同一类型);特点1、可以存储多个数据,但只能是同一类型;2、数组创建完成后数组长度无法改变;3、数组中存储的数据叫数组的元素,而数组中的每个元素都有对应的下标,下标从0开始;数组的创建与使用方式1、创建方式一: 数据类型[] 变量名 = new 数据类型[数组长度];(java 语法) 数据类型 变量
2020-10-20 19:53:12 412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人