文章目录
- 1丶丑数
- 2、各位相加
- 3丶搜索插入位置
- 4丶第一个错误的版本
1丶丑数
因为丑数只能被2,3,5整除,所以让n依次去除2,3,5,如果最后是n为1,就说明是丑数。
class Solution {
public boolean isUgly(int n) {
if(n <= 0){
return false;
}
while(n % 2 == 0){
n /= 2;
}
while(n % 3 == 0){
n /= 3;
}
while(n % 5 == 0){
n /= 5;
}
return n == 1;
}
}
2、各位相加
class Solution {
public int addDigits(int num) {
if(num<10)
return num;
while(num>=10){
int sum=0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
num=sum;
}
return num;
}
}
3丶搜索插入位置
本小菜坤的答案:
class Solution {
public int searchInsert(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
if (nums[i] == target) {
return i;
}
}
int place=0;
for (int j = 0; j< nums.length-1; j++) {
if (nums[j] <= target && nums[j + 1] >= target) {
return j+1;
}
}
if(nums[nums.length-1]<target){ //判断最后一个元素
return nums.length;
}
return 0;
}
}
4丶第一个错误的版本
看着题目挺复杂,其实思想就是二分查找的思想。
/* The isBadVersion API is defined in the parent class VersionControl.
boolean isBadVersion(int version); */
public class Solution extends VersionControl {
public int firstBadVersion(int n) {
int left=1;
int right=n;
while(left<right){
int mid=left+(right-left)/2; //中间值没有设置为(left+right)/2的原因是,当left和right都是非常大的整数时防止运算溢出
if(isBadVersion(mid)){
right=mid;
}
else{
left=mid+1;
}
}
return left;
}
}