注:此博客不再更新,所有最新文章将发表在个人独立博客limengting.site。分享技术,记录生活,欢迎大家关注
1、如何将一个整数数组排序?
int[] nums; // 已知的一个整数数组
Arrays.sort(nums); // 排序
2、什么时候用length,什么时候用length(),什么时候用size()?
对于数组,length是数组的一个属性,用nums.length;
对于字符串,用length()方法查看字符串的长度
对于泛型集合,用size()方法查看这个泛型集合有多少个元素
例子:
public static void main(String[] args) {
String[] list={"ma","cao","yuan"}; // 数组
String a="macaoyuan"; // 字符串
System.out.println(list.length);
System.out.println(a.length());
List<Object> array=new ArrayList(); // 泛型集合
array.add(a);
System.out.println(array.size());
}
输出的值为:
3
9
1
3、如何得到一个已知矩阵(二维数组)的行数和列数?
int[][] nums; // 已知矩阵
int n = nums.length, m = nums[0].length; // 得到行数和列数
4、相同元素矩阵如何从mn矩阵重构为rc矩阵?
// 遍历处理第i+1个元素
for (int i = 0; i < r * c; i ++)
res[i / c][i % c] = nums[i / n][i % n];
5、如何定义一个不定长整型数组?
List<Integer> list = new ArrayList<>();
6、ArrayList 中的 set(index, object) 和 add(index, object) 的区别
set:将原来index位置上的object的替换掉
add:将原来index位置上的object向后移动
7、(1)如何将整数2473变成字符串"2473"
(2)如何将整数2473变成数组[‘2’, ‘4’, ‘7’, ‘3’]
(3)如何将数组[‘2’, ‘4’, ‘7’, ‘3’]还原为数字2473
char[] digits = Integer.toString(num);
char[] digits = Integer.toString(num).toCharArray();
Integer.valueOf(new String(digits));
「算法思路篇」
1、一个长度为n的整型数组int[] nums,nums[i] 属于[1,n],有些数出现一次,有些数出现两次,要找出出现两次的数,时间复杂度O(n),不使用额外空间?(leetcode 442题)
思路:引入索引index与nums[i]的映射函数,当第一次遇见index位置的nums[index],将nums[index]反转置为负数,当出现与前面出现过的nums[i]值相同的nums[i],则由映射函数算出相同的index,对应到相同的nums[index],若此时nums[index]为一个负数,则nums[i]曾经出现过,将nums[i]加入到res数组中。
class Solution {
public List<Integer> findDuplicates(int[] nums) {
List<Integer> res = new ArrayList<>();
for (int i = 0; i < nums.length; i ++) {
int index = Math.abs(nums[i]) - 1; // nums[i]的取值范围为1到n, nums[i] - 1的取值范围为0到n-1,可作为下标索引
if (nums[index] > 0) {
nums[index] = - nums[index];
} else res.add(index + 1);
}
return res;
}
}