“世间有吸引法则,在于你有没有价值,价值来于物质资本和精神资本”
标识符的命名规则
标识符的含义:是指在程序中,我们自己定义的内容,例如方法名,变量名或者类名
命名规则:(硬性要求)
标识符可以包含字母[a-z,A-Z],数字[0,9],_以及$
不能以数字开头
不能是关键字
命名规范:(非硬性要求)
类名:首字母大写,其他每个单词首字母大写(大驼峰)
方法名:首字母小写,其他每个单词首字母大写
变量名:首字母小写,其他每个单词首字母大写
instanceof关键字的作用
instanceof严格来说是java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:
boolean reslut = obj instanceof Class;
其中obj为一个对象,Class表示一个类或者一个接口,当obj为Class的对象,或者是其直接或间接子类,或者是其接口实现类,结果reslut都返回true,否则都返回false,并且当obj为null时也返回false
注意:编译器会检查obj是否可以转换为右边class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定
int i = 0;
// 编译不通过,i必须是引用数据类型,不能是基本数据类型
System.out.println(i instanceof Integer);
// 编译不通过
System.out.println(i instanceof Object);
Integer integer = new Integer(1);
//true
System.out.println(integer instanceof Integer);
// false,在JavaSE规范中对instanceof运算符的规定:若obj为null则返回false
System.out.println(null instanceof Integer);
二分查找
题目:最小公共值
难度:🌟
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-common-value
给你两个整数数组 nums1 和 nums2 ,它们已经按非降序排序,请你返回两个数组的 最小公共整数 。如果两个数组 nums1 和 nums2 没有公共整数,请你返回 -1 。
如果一个整数在两个数组中都 至少出现一次 ,那么这个整数是数组 nums1 和 nums2 公共 的。
输入:nums1 = [1,2,3], nums2 = [2,4]
输出:2
解释:两个数组的最小公共元素是 2 ,所以我们返回 2 。输入:nums1 = [1,2,3,6], nums2 = [2,3,4,5]
输出:2
解释:两个数组中的公共元素是 2 和 3 ,2 是较小值,所以返回 2 。
请先思考!!!!
|||||||||||
|||||||||||
|||||||||||
|||||||||||
|||||||||||
|||||||||||
|||||||||||
答答答答答答答答答答答
案案案案案案案案案案案
往往往往往往往往往往往
下下下下下下下下下下下
翻翻翻翻翻翻翻翻翻翻翻
|||||||||||
|||||||||||
|||||||||||
|||||||||||
|||||||||||
|||||||||||
|||||||||||
public int getCommon(int[] nums1, int[] nums2) {
HashSet<Integer> set = new HashSet<Integer>();
int target = -1;
for (int i = 0; i < nums2.length; i++) {
set.add(nums2[i]);
}
for(int i = 0 ; i < nums1.length ; i++){
if(set.contains(nums1[i])){
target = nums1[i];
break;
}
}
return target;
}
题解:
哈希法来解决提问题就显得很容易理解,首先将一个数组的添加到set集合中,然后利用set集合的contains方法很容易就可以找出公共的数值
class Solution {
public int getCommon(int[] nums1, int[] nums2) {
// 二分查找思路:一次遍历其中一个数组的值,
// 将每次遍历的数值当成二分查找的目标值去查寻第二个数组
// 如果相等就返回否则返回-1
for(int i = 0 ; i < nums1.length ; i++){
int l = 0;
// 防止数组越界异常
int r = nums2.length - 1;
while(l <= r){
int middle = (l + r) >> 1;
if(nums1[i] == nums2[middle]){
return nums1[i];
}
if(nums1[i] > nums2[middle]){
l = middle + 1;
}else{
r = middle - 1;
}
}
}
return -1;
}
}
题解:
二分查找法就是以此循环一个数据,然后将循环的值作为目标值来进行查找,如果有就返回,若没有就这返回-1
class Solution {
public int getCommon(int[] nums1, int[] nums2) {
// 确认大数组包含小数组
if(nums1[nums1.length - 1] < nums2[0] ||
nums1[0] > nums2[nums2.length - 1]){
return -1;
}
int i = 0;
int j = 0;
while(true){
// i或j超出索引后直接返回-1
if(i > nums1.length-1 || j > nums2.length-1){
return -1;
}
// 相等就直接返回
if(nums1[i] == nums2[j]){
return nums1[i];
}
if(nums1[i] < nums2[j]){
i++;
}else{
j++;
}
}
}
}
题解:
请大家自己思考!!!