今天的每日一题是一道简单题,但是和之前做的每日一题以及我前两天做的微软笔试有所关联:这种类型都是模拟题,像是这道模拟的就是简单进位
- 加一
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
if digits[-1]<9:
digits[-1]+=1
return digits
digits[-1]=0
carry,cnt =1,-2
while carry:
if -cnt>len(digits):
digits[0:0]=[1]
return digits
if digits[cnt]<9:
digits[cnt]+=1
return digits
digits[cnt]=0
cnt-=1
这是我写的python版本
再练习一下java版本
import java.util.Arrays;
public class Solution66 {
public static void main(String[] args) {
int[] test = {9,9,9};
System.out.println(Arrays.toString(test));
int[] res = new Solution66().plusOne(test);
System.out.println(Arrays.toString(res));
}
public int[] plusOne(int[] digits) {
int n = digits.length;
if(digits[n-1]<9) {
digits[n-1]++;
return digits;
}
digits[n-1]=0;
int carry =1,cnt =n-2;
while (carry>0){
if (cnt<0){
int[] NewDigits = new int[digits.length+1];
NewDigits[0]=1;
return NewDigits;
}
if (digits[cnt]<9) {
digits[cnt]++;
return digits;
}
digits[cnt]=0;
cnt-=1;
}
return digits;
}
}
这道简单的模拟题,让我想到了其他的题目:
一道是166. 分数到小数 ,这道是除法的模拟题:
class Solution:
def fractionToDecimal(self, numerator: int, denominator: int) -> str:
#分数转换到小数
#正负处理
sign=''
if (numerator>0 and denominator<0) or (numerator<0 and denominator>0):
sign='-'
numerator,denominator=abs(numerator),abs(denominator)
a= sign+str((numerator)//denominator)#//是向下取整,对于负数情况要注意
reminder = defaultdict(int)
MOD = (numerator)%denominator
decimal,idx='',1
while MOD:
if not reminder[MOD]:
reminder[MOD]=idx
else:
newidx=reminder[MOD]
decimal= decimal[:newidx-1]+'('+decimal[newidx-1:]+')'
return a+'.'+decimal
idx+=1
decimal+=str(MOD*10//denominator)
MOD=MOD*10%denominator
return a+'.'+decimal if decimal else a
一道是微软的笔试题:乘法器题目
输入数组
A=[1,2,3,2,5,7,9,1,7]
得到 719752321*17 = 12235789457
再求得每个数的和为53
def solution(A):
# write your code in Python 3.6
cur = A[0]*7
b,a = cur//10,cur%10
res=a
n = len(A)
for i in range(1,n):
cur = (A[i]*7+A[i-1]+b)
b,a = cur//10,cur%10
res+=a
mor =(b+A[-1])
return res+mor//10+mor%10



