leetCode java day15
害,,,这几天备考期中,直接给我精力吸没了,明天将是有活力的一天
o( ̄▽ ̄)ブ
给你一个坐标 coordinates
,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。
如果所给格子的颜色是白色,请你返回 true
,如果是黑色,请返回 false
。
给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。
示例 1:
输入:coordinates = "a1"
输出:false
解释:如上图棋盘所示,"a1" 坐标的格子是黑色的,所以返回 false 。
示例 2:
输入:coordinates = "h3"
输出:true
解释:如上图棋盘所示,"h3" 坐标的格子是白色的,所以返回 true 。
示例 3:
输入:coordinates = "c7"
输出:false
class Solution {
public boolean squareIsWhite(String coordinates) {
if( coordinates.charAt(0)%2==0&&(coordinates.charAt(1)-'a')%2==0){
return true;
}
if(coordinates.charAt(0)%2!=0&&(coordinates.charAt(1)-'a')%2!=0){
return true;
}
return false;
}
}
数组 nums
,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例 1 :
输入:nums = [2,2,1]
输出:1
示例 2 :
输入:nums = [4,1,2,1,2]
输出:4
示例 3 :
输入:nums = [1]
输出:1
提示:
1 <= nums.length <= 3 * 104
-3 * 104 <= nums[i] <= 3 * 104
- 除了某个元素只出现一次以外,其余每个元素均出现两次。
class Solution {
public int singleNumber(int[] nums) {
if(nums.length==1){
return nums[0];
}
Arrays.sort(nums);
for(int i=0;i<nums.length-1;i+=2){
if(nums[i]!=nums[i+1]){
return nums[i];
}
}
return nums[nums.length-1];
}
}
嘶。。。这个时间很让人不满意。。
class Solution {
public int singleNumber(int[] nums) {
int temp=0;
for(int i=0;i<nums.length;i++){
temp^=nums[i];
}
return temp;
}
}
az。。。抱歉,数电和离散老师。咱就是说数学yyds。
给定一个包含 [0, n]
中 n
个数的数组 nums
,找出 [0, n]
这个范围内没有出现在数组中的那个数。
示例 1:
输入:nums = [3,0,1]
输出:2
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。
示例 2:
输入:nums = [0,1]
输出:2
解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。
示例 3:
输入:nums = [9,6,4,2,3,5,7,0,1]
输出:8
解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。8 是丢失的数字,因为它没有出现在 nums 中。
示例 4:
输入:nums = [0]
输出:1
解释:n = 1,因为有 1 个数字,所以所有的数字都在范围 [0,1] 内。1 是丢失的数字,因为它没有出现在 nums 中。
class Solution {
public int missingNumber(int[] nums) {
int n=nums.length;
if(n==1){
if(nums[0]==0)
return 1;
else
return 0;
}
Arrays.sort(nums);
for(int i=0;i<n;i++){
if(nums[i]!=i){
return i;
}
}
return n;
}
}
class Solution {
public int missingNumber(int[] nums) {
int n=nums.length;
int sum=n*(n+1)/2;
for(int i=0;i<n;i++){
sum-=nums[i];
}
return sum;
}
}
高斯kami~~!