「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」
求平方根
给出一个数求该数的平方根,要求不使用库函数
思路
1.二分查找,以0和x作为左右边界进行划分
2.关键判断
if(mid<=x/mid&&(mid+1)>x/(mid+1)) {
class Solution {
public int mySqrt(int x) {
if(x<=1) return x;
//int a = x/2;
int left = 0;
int right = x;
while(left<=right){
int mid = left+((right-left)>>1);
if(mid==0) return 0;
if(mid<=x/mid&&(mid+1)>x/(mid+1)) {
return mid;
}else if(x/mid<mid){
right=mid;
}else{
left=mid+1;
}
}
return 0;
}
}
\
提升——精确到0.000001位
关键判断
Math.abs(mid - x / mid) < 0.000001
package com.improve;
import java.text.DecimalFormat;
public class Code02_MySqrt {
public static void main(String[] args) {
Code02_MySqrt code = new Code02_MySqrt();
DecimalFormat decimalFormat = new DecimalFormat("0.000000");
String format = decimalFormat.format(code.mySqrt(19));
System.out.println(format);
}
public double mySqrt(int x) {
double left = 0;
double right = x;
while (left <= right) {
double mid = left + ((right - left) / 2);
if (x / mid <= mid && (mid + 1) > x / (mid + 1) && Math.abs(mid - x / mid) < 0.000001) {
//找到位置
return mid;
} else if (x / mid > mid) {
left = mid;
} else {
right = mid;
}
}
return 0;
}
}
字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
来源:力扣(LeetCode)
示例 1:
输入:num1 = "11", num2 = "123"
输出:"134" 示例 2:
输入:num1 = "456", num2 = "77"
输出:"533" 示例 3:
输入:num1 = "0", num2 = "0"
输出:"0"
class Solution {
public String addStrings(String num1, String num2) {
char[] chars1 = num1.toCharArray();
char[] chars2 = num2.toCharArray();
int p1 = chars1.length -1;
int p2 = chars2.length - 1;
int pre =0 ;
StringBuilder sb = new StringBuilder();
while(p1>=0||p2>=0){
int t1 = p1>=0?chars1[p1--]-'0':0;
int t2 = p2>=0?chars2[p2--]-'0':0;
int t = t1 + t2 + pre;
sb.append(String.valueOf(t%10));
pre = t/10;
}
if(pre!=0) sb.append(pre);
return sb.reverse().toString();
}
}
3的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x
class Solution {
public boolean isPowerOfThree(int n) {
while(n>=3){
if(n%3!=0) return false;
n=n/3;
}
return n==1;
}
}