268.丢失的数字
给定一个包含 [0, n]
中 n
个数的数组 nums
,找出 [0, n]
这个范围内没有出现在数组中的那个数。
示例 1:
输入:nums = [3,0,1] 输出:2 解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。
思路:先排序后比较
1.先对数组进行排序
2.将数组的长度赋给n
3.for循环:将数组的最后一个值赋给i,当最后一个元素与n相同时,则n--,i--;
反之,最后一个元素与n不相同时,则返回n;
class Solution {
public int missingNumber(int[] nums) {
Arrays.sort(nums);
int n = nums.length;
for(int i = nums.length-1; i >= 0;i--){
if(nums[i] != n)
return n;
else
n--;
}
return n;
}
}
290.单词规律
给定一种规律 pattern
和一个字符串 s
,判断 s
是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern
里的每个字母和字符串 s
中的每个非空单词之间存在着双向连接的对应规律。
思路:
1.先对字符串s进行拆分,保存在数组str中
2.比较长度是否一致判断对错:若pattern的长度与数组str的长度不一致,则返回false;
3.创建一个map-->以键值对形式保存数据 key--value <key:Object,value:Integer>
HashMap 有去重功能 指的是键
比较:在for循环时,将patter的键值对与数组str的键值对同时添加到map集合中,若相同,则继续;若不等,则返回false
class Solution {
public boolean wordPattern(String pattern, String s) {
String str[] = s.split(" ");
if(str.length != pattern.length())
return false;
Map<Object,Integer> map = new HashMap<>();
for(Integer i = 0;i<str.length;i++){ //注意:如果i定义为int会导致某些用例无法通过
if(map.put(pattern.charAt(i),i) != map.put(str[i],i))
return false;
}
return true;
}
}