Java
weixin_44077638
这个作者很懒,什么都没留下…
展开
-
14. 最长公共前缀
解题思路:当字符串数组长度为 0 时则公共前缀为空,当字符串数组长度为1时,则公共前缀为strs[0]。可直接求出结果。令最长公共前缀 为res,并进行初始化为第一个字符串。遍历后面的字符串,依次将其与 为res 进行比较,两两找出公共前缀,最终结果即为最长公共前缀。如果查找过程中出现了res为空或者strs[i]为空的情况,则公共前缀为空串,直接返回。时间复杂度:O(n)源代...原创 2020-03-27 14:40:01 · 79 阅读 · 0 评论 -
13. 罗马数字转整数
解题思路:首先将所有的组合可能性列出并添加到哈希表中 然后对字符串进行遍历,由于组合只有两种,一种是 1 个字符,一种是 2 个字符,其中 2 个字符优先于 1 个字符 先判断两个字符的组合在哈希表中是否存在,存在则将值取出加到结果 ans 中,并向后移2个字符。不存在则将判断当前 1 个字符是否存在,存在则将值取出加到结果 ans 中,并向后移 1 个字符 遍历结束返回结...原创 2020-03-27 14:36:06 · 95 阅读 · 0 评论 -
9. 回文数
解题思路:对于数字的末位,直接取余就可以了,对于数字的首位,我们可以这么算。首先用一个变量记录数字的最高位,比如 123211232112321,可以标记 help 为 100001000010000,第一个末位为 111,第一个首位为 12321/10000=1,接下来我们需要计算 232232232 是否为回文,怎么计算呢?我们需要去掉首位和末位。可以采用 x % help...原创 2020-03-27 14:30:29 · 128 阅读 · 0 评论 -
7. 整数反转
解题思路:依次取出当前数字的最后一位数,累加。关键在于如何判断整数溢出:将每次操作后的数字用临时变量存储,对该变量“反操作”,若与操作前的结果不等,则发生溢出,直接返回0源代码:class Solution { public int reverse(int x) { int res = 0 ; while(x != 0){ ...原创 2020-03-27 14:22:43 · 72 阅读 · 0 评论 -
牛客网专项练习(十二)
1、有函数int func(int i)的实现为 1 2 3 4 5 6 7 8 9 int func(int i) { if (i > 1) return i * func(i - 1); else retu...原创 2020-03-27 12:26:17 · 1087 阅读 · 0 评论 -
牛客网专项练习(十一)
从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是……描述的是()正确答案: E 你的答案: E (正确)贪心回溯穷举分治递归解题思路:递归指的是一个过程:函数不断引用自身,直到引用的对象已...原创 2020-03-27 11:42:59 · 1021 阅读 · 0 评论 -
Java之面向对象(三)
6.10类的分类1、实体类类中的内容基本上都是成员函数或成员变量,也存在静态成员2、工具类提供已经被实现的功能,并向外部供应,基本上都是静态函数运用静态的原因:共有 存在时间长 只需要加载一次,后续可随意使用3、主类(测试类)主要用于运行/测试代码,这个类中会有主函数的存在实体类是可以存在主函数的工具类一般不会存在主函数6.11 静态...原创 2020-03-20 16:52:00 · 146 阅读 · 0 评论 -
345. 反转字符串中的元音字母
解题思路:本题为基础双指针法交换前后元音元素; 一般遇见字符串问题,能转成字符数组就尽量转(方便); 转换成数组后,分别定义前后两个索引指针用 while 依次遍历数组; 定义 isVowel() 方法将非元音元素返回给判断处,然后移动指针直到符合元音的位置,然后 tmp 进行交换即可; 最后扫描完数组后,一定要在返回的时候再转成字符串 String 输出。class Solu...原创 2020-03-20 16:04:49 · 163 阅读 · 0 评论 -
342. 4的幂
解题思路:位操作算法:我们首先检查 num 是否为 2 的幂:x > 0 and x & (x - 1) == 0。 现在的问题是区分 2 的偶数幂(当 xxx 是 4 的幂时)和 2 的奇数幂(当 xxx 不是 4 的幂时)。在二进制表示中,这两种情况都只有一位为 1,其余为 0。 有什么区别?在第一种情况下(4 的幂),1 处于偶数位置:第 0 位、第 2 ...原创 2020-03-20 15:59:43 · 75 阅读 · 0 评论 -
303. 区域和检索 - 数组不可变
解题思路:开始没看懂题目,想着不是一个循环的事情吗,但是看网上许多人提醒说是多次调用方法sumRange,意思是给你一个nums[100],然后给你多组i j 比如求和1--100的 1--50的 2---10 50--60的我算是取巧了 毕竟是动态规划的题目 就直接用一个数组a[nums.length]存起了0--j的和那就简单了 然后i--j的和不就是 a[j]-a[i-1]嘛a...原创 2020-03-20 15:49:54 · 81 阅读 · 0 评论 -
两个数组的交集 II
解题思路:哈希映射在这里,我们需要使用 HashMap 来跟踪每个数字出现的次数。我们先在 HashMap 记录一个数组中的存在的数字和对应出现的次数。然后,我们遍历第二个数组,检查数字在 HashMap 中是否存在,如果存在且计数为正,则将该数字添加到答案并减少 HashMap 中的计数。检查数组的大小并对较小的数组进行哈希映射是一个小细节,当其中一个数组较大时,会减少内存的使...原创 2020-03-20 15:41:44 · 61 阅读 · 0 评论 -
牛客网专项练习(十)
1、用二分(对半)查找表的元素的速度比用顺序法( )正确答案: D 必然快必然慢相等不能确定分析:当查找表中元素个数为1个或2个时,二分法和顺序法速度相等;当元素个数大于2个时,二分法更快。(前提是有序表)2、若在线性表中采用折半查找法查找元素,该线性表应该:正确答案: C 你的答案: C (正确)元素按值有序采用顺序...原创 2020-03-20 15:18:05 · 2213 阅读 · 0 评论 -
牛客网专项练习(九)
二分查找的时间复杂度( )正确答案: CO(N*log(N))O(N)O(log(N))O(N^2)分析:因为二分查找每次排除掉一半的不适合值,所以对于n个元素的情况:一次二分剩下:n/2两次二分剩下:n/2/2 = n/4。。。m次二分剩下:n/(2^m)在最坏情况下是在排除到只剩下最后一个值之后得到结果,所以为n/(2^m)=1;2^m...原创 2020-03-20 14:55:39 · 949 阅读 · 0 评论 -
牛客网专项练习(八)
1、对线性表进行折半查找时,要求线性表必须以链式方式存储,且结点按关键字有序排列,这样的说法正确吗?正确答案: B 正确不正确分析:二分查找也称折半查找(BinarySearch),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。为什么采取顺序存储结构:折半查找需要先对查找的数据集合排序,并且每次要获得...原创 2020-03-13 15:14:20 · 1055 阅读 · 0 评论 -
牛客网专项练习(七)
1、以下哪个数据结构不是多型数据类型()正确答案: D 栈广义表有向图字符串分析:多型就是数据元素的类型不确定,字符串的每个元素始终都是字符(char),而不会是别的类型。比如栈可以是整数栈、字符栈、对象栈等等。但是字符串,它的元素必然是字符。2、以下数据结构中,()是非线性数据结构正确答案: A 你的答案: A (正确)...原创 2020-03-13 14:36:16 · 666 阅读 · 0 评论 -
1200. 最小绝对差
解题思路这道题比较简单,只要先将数组排序,因为arr.length >= 2,所以可以先初始化最小绝对差为arr[1] - arr[0],然后从索引1开始遍历数组,当这个索引的值和前一个索引的值得绝对值差==min时,添加到res里面,当<min时,清空res,因为之前添加的已经不算数了,更新min的值并且把当前索引的值和前一个索引的值添加到res里面。因为兴趣,顺便写了...原创 2020-03-13 13:30:23 · 124 阅读 · 0 评论 -
1252. 奇数值单元格的数目
解题思路:第一步:indices的第一列是行变换,取出后保存到rowindices的第二列是列变换,取出后保存到col第二步:遍历row执行行变换遍历col执行列变换第三步:遍历变换后的二维矩阵,统计矩阵中奇数的个数源代码class Solution { public int oddCells(int n, int m, int[][] indice...原创 2020-03-13 13:24:19 · 122 阅读 · 1 评论 -
1351。统计有序矩阵中的负数
解题思路改进第一次的倒序遍历代码,减少时间复杂度时间复杂度:O(n)空间复杂度:O(5)代码class Solution { public int countNegatives(int[][] grid) { int m=grid.length; int n=grid[0].length; if(m==0) ...原创 2020-03-13 13:12:04 · 174 阅读 · 0 评论 -
283.移动零
283.移动零源代码:class Solution { public void moveZeroes(int[] nums) { int k=0; int temp=0; for(int i=0;i<nums.length;i++){ if(nums[i]!=0){ ...原创 2020-03-13 12:57:04 · 96 阅读 · 0 评论 -
Java之面向对象特点
static关键字被static关键字修饰的方法一般被称为静态方法 没有被static关键字修饰的方法 一般称为非静态方法。同理 被static关键字修饰的成员变量 叫静态的成员变量 ,没有被static修饰的叫非静态成员变量。静态方法 只能访问静态的成员变量 如果访问非静态成员变量 那么无法通过编译,无需创建对象,使用类名就可以直接调用。 非静态方法 既能访问静态的成员变量,也能...原创 2020-03-13 12:41:19 · 135 阅读 · 0 评论 -
Java之面向对象(二)
private和封装private关键字private关键字 就是一个权限关键字 public protected 默认不写private关键字 表示私有权限 该成员变量或成员函数只能够在类中被访问 外界不可访问一旦相关属性或者方法被定义为私有化之后,要使用时直接要进行get和set方法(属性)。例如下面这个例子class Point{ private do...原创 2020-03-13 11:31:37 · 74 阅读 · 0 评论 -
Java之面向对象(一)
6.1 面向过程与面向对象什么是面向过程,面向对象?有何区别它们都是解决问题的思路、大致的方向。面向过程——步骤化面向过程就是分析出实现需求所需要的步骤,通过函数一步一步实现这些步骤,接着依次调用即可面向对象——行为化面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为面向...原创 2020-03-02 18:09:13 · 106 阅读 · 0 评论 -
1108. IP 地址无效化
原文链接:https://leetcode-cn.com/problems/defanging-an-ip-address/解题思路此题主要考察两个知识点表层的知识点是简单的字符串替换 隐藏的知识点是考察了在字符串替换中可能需要用到的正则表达式,由于正则表达中 "." 是一个特殊字符,所以在替换IP地址中的 "." 时需要转义。除了 ".",正则表达式中的特殊字符还有 ".$|()...原创 2020-03-01 15:36:30 · 58 阅读 · 0 评论 -
557. 反转字符串中的单词 III
原文链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/简单的解法 [Accepted]第一种方法非常简单,我们将输入字符串中按照空白字符串分开,然后把所有单词放到一个字符串列表中,然后我们逐一遍历每一个字符串并把反转结果连接起来。最后,我们将删除了额外空白字符的字符串返回。public class S...原创 2020-03-01 15:31:25 · 64 阅读 · 0 评论 -
8. 字符串转换整数 (atoi)
原文链接:https://leetcode-cn.com/problems/string-to-integer-atoi/解题思路看到字符串那就先转换为char[]。这道题,就从左往右开始遍历。寻找数据的起始值。情况如下。遇到空格则跳过。 非空格情况符号'-'或者'+'则记录为正还是负任然后开始处理数据转换,将当前index++之后开始处理数据。 符号不是数字...原创 2020-03-01 15:23:19 · 59 阅读 · 0 评论 -
1.两数之和
原文链接:https://leetcode-cn.com/problems/two-sum/审题都是整数,有可能有复数 返回数组下标,下标不相同 列表无序思路暴力:两层循环求解 hash表:key为目标数与当前数之差 双指针:夹逼找到是否有目标数反馈:国际站有(log n)方法,一个数据排序双指针找,单独复制出来的数组用于找回下标代码实现暴力法/** ...原创 2020-03-01 15:01:43 · 64 阅读 · 0 评论 -
牛客网数组专项练习(六)
1、对矩阵压缩存储是为了()正确答案: D 方便运算方便存储提高运算速度减少存储空间分析:A C,都是运算方面的好处B,如果邻接表,还要存指针,并没有方便存储D,不管是,邻接矩阵还是邻接表,都节省了空间2、设有一个二维数组A[m][n],假设A[0][0]存放位置在 644,A[2][2]存放位置在676,每个元素占一个空间,问A[3][...原创 2020-03-01 14:27:20 · 779 阅读 · 0 评论 -
牛客网数组专项练习(五)
1、已知声明并初始化二维数组 int a[ ][ ]={{1,2},{3,4},{5,6}} ,则 a[1][1] 的值为()正确答案: C1245分析:二维数组: 0 1 0 {1,2} 1 {3,4}2 {5,6} 所以a[1][1]=4;...原创 2020-03-01 13:49:59 · 1412 阅读 · 0 评论 -
Java数组专项练习(四)
1、稀疏矩阵一般采用三元组顺序表方法压缩存储 。 ( )正确答案: A 你的答案: A (正确)正确错误分析:稀疏矩阵有两种压缩存储方式,一个是三元组,一个是十字链表,两者各有适用环境。2、下面哪项是数组优于链表的特点?正确答案: D 你的答案: D (正确)方便删除方便插入长度可变存储空间小分析:数组优于链表的:1....原创 2020-02-28 23:05:46 · 488 阅读 · 0 评论 -
Java数组专项练习(三)
1、数组元素的下标值越大,存取时间越长,这样的说法正确吗?正确答案: B 你的答案: B (正确)正确不正确分析:数组存取采用首地址加上元素所在位置*元素大小计算(行优先或者列优先)其所在地址 假设一个数组为a[10][10] 数组a[0][0]地址为0x00,采用行优先存储,元素占4个字节 a[i][j]的地址为0x00+(i*10+j)*4 所以不会因为数组过长而...原创 2020-02-28 12:03:06 · 899 阅读 · 0 评论 -
905. 按奇偶排序数组
原文链接:https://leetcode-cn.com/problems/sort-array-by-parity/给定一个非负整数数组 A,返回一个数组,在该数组中,A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] ...原创 2020-02-23 18:13:24 · 117 阅读 · 1 评论 -
1013. 将数组分成和相等的三个部分
原文链接:https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum/给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果我们可以找出索引 i+1 < j 且满足 (A[0] + A[1] + ... + A[i] =...原创 2020-02-23 18:13:59 · 75 阅读 · 0 评论 -
1295. 统计位数为偶数的数字
原文链接:https://leetcode-cn.com/problems/find-numbers-with-even-number-of-digits/给你一个整数数组nums,请你返回其中位数为偶数的数字的个数。示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数)345 是 3 位数字(位数为奇数) ...原创 2020-02-24 09:34:27 · 176 阅读 · 0 评论 -
1313. 解压缩编码列表
原文链接:https://leetcode-cn.com/problems/decompress-run-length-encoded-list/思路分析:这道题是让我们考虑每对相邻的两个元素,每一对都表示解压后有a个值为b的元素。1.遍历nums数组中偶数角标,把每个角标加起来,这就能得到一个新数组的长度;2.遍历nums数组中奇数角标,获取需要被多次写入的数据。源代码如...原创 2020-02-24 09:34:12 · 127 阅读 · 0 评论 -
数组(查漏补缺)
String[] args主要用在当我们执行Java程序(java 字节码文件)的时候,可以指定一些参数的。输入的值会传到args中,只不过输入的数是以字符串的形式出现的。args其实并不是确定的,它是可变的。可变长参数当我们在给一个函数传参的时候,如果我们不确定具体传参数的个数的话,可以使用可变长参数(这些参数必须是相同的类型) 可变长参数本质上就是一个数组注意如果可变长...原创 2020-02-23 13:38:21 · 75 阅读 · 0 评论 -
674. 最长连续递增序列
原文链接:https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/解题思路过程:count 为当前元素峰值,ans为最大峰值初始化 count = 1从 0 位置开始遍历,遍历时根据前后元素状态判断是否递增,递增则 count++,递减则 count=1如果 count>an...原创 2020-02-23 13:09:21 · 72 阅读 · 0 评论 -
209.长度最小的子数组
原文链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum/解题思路:求出从第 0 个数字开始,总和大于等于 s 时的长度。求出从第 1 个数字开始,总和大于等于 s 时的长度。求出从第 2 个数字开始,总和大于等于 s 时的长度。...在求总和时候,可以利用 sums 数组,不需要累加。比如求从第...原创 2020-02-23 12:51:47 · 64 阅读 · 0 评论 -
169 多数元素
原文链接:https://leetcode-cn.com/problems/majority-element/解题思路:先排序,若存在多数元素,则至少有连续n/2+1这么多元素值相等,即nums[i] == nums[i+nums.length/2]源代码1:class Solution { public int majorityElement(int[] ...原创 2020-02-23 12:31:13 · 50 阅读 · 0 评论 -
66.加一
https://leetcode-cn.com/problems/plus-one/66.加一思路分析:标签:数组遍历末位无进位,则末位加一即可,因为末位无进位,前面也不可能产生进位,比如 45 => 46 末位有进位,在中间位置进位停止,则需要找到进位的典型标志,即为当前位 %10 后为 0,则前一位加 1,直到不为 0 为止,比如 499 => 500 末位...原创 2020-02-23 12:11:22 · 66 阅读 · 0 评论 -
牛客网数组专项练习(二)
1、下面哪项不是链表优于数组的特点?正确答案: D 方便删除方便插入长度可变存储空间小链表的特点:表方便删除和插入,只需知道结点和要插入的信息即可 长度可变,一般链表是动态分配内存空间 链表的结点信息至少包含数据域和指针域,相同数据下:数组的大小是链表大小的子集2、向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动()...原创 2020-02-23 11:44:39 · 989 阅读 · 1 评论