✨今日三剑
文章目录
JZ3 数组中重复的数字
题目描述
思路详解
本题的思路比较简单,首先将这个数组排序,遍历数组,找到当前的和前一个相同的直接输出就好了。没找到输出-1.
注意:这个方法要注意循环的时候下标要从1开始哦,不然会报数组下标异常滴。
代码与结果
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型一维数组 * @return int整型 */ public int duplicate (int[] numbers) { // write code here Arrays.sort(numbers); for(int i = 1 ; i < numbers.length; i++) if(numbers[i] == numbers[i - 1]) return numbers[i]; return -1; } }
JZ4 二维数组中的查找
题目描述
思路详解
这个题目有点难度。仔细读题发现了一个重要条件,这个二位数组行和列都是递增的,也就意味着左上最小,右下最大,并且左下元素大于它上方的元素,小于它右方的元素,右上元素与之相反。
根据这个规律,我们可以从左下出发分情况往上或者右进行找,同时要先判断一下特殊情况哦。
具体细节上代码。
代码与结果
public class Solution { public boolean Find(int target, int [][] array) { //优先判断特殊 if(array.length == 0) return false; int n = array.length; if(array[0].length == 0) return false; int m = array[0].length; //从最左下角的元素开始往左或往上 for(int i = n - 1, j = 0; i >= 0 && j < m; ){ //元素较大,往上走 if(array[i][j] > target) i--; //元素较小,往右走 else if(array[i][j] < target) j++; else return true; } return false; } }
JZ5 替换空格
题目描述
思路详解
本题的替换空格,思路还是比较简单的。
我们遍历字符串把它存到一个临时字符数组里,在遍历的时候直接判断是否为空,如果是直接加进‘%20’三个字符,最后输出即可。
注意:临时数组的大小,设置为字符串长度的3倍,刚刚好,假设该字符串全是空格,也可以满足。同时也要注意字符串的相关方法的运用哦。
代码与结果
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ public String replaceSpace(String s) { int length = s.length(); char[] array = new char[length * 3]; int index = 0; for (int i = 0; i < length; i++) { char c = s.charAt(i); if (c == ' ') { array[index++] = '%'; array[index++] = '2'; array[index++] = '0'; } else { array[index++] = c; } } String newStr = new String(array, 0, index); return newStr; } }
✨总结
到这里今日的三剑就完成了,题目不难,但难在坚持,和小编一起互相鼓励,互相监督,共同30太难完成《剑指offer》吧。小编在牛客等你,关注《牛客—剑指offer》专栏,和编一起加油!!!