day26-27
送分题:
Go版本:
func maximumDifference(nums []int) int {
// 巧妙的没法排序解决了
max:=0
// 暴力 O(n*n)
// for i:=0;i<len(nums);i++{
// for j:=i+1;j<len(nums);j++{
// if nums[i]<nums[j] && nums[j]-nums[i]>max{
// max=nums[j]-nums[i]
// }
// }
// }
// 右边最大减去左边最小
min:=nums[0]
for i:=0;i<len(nums);i++{
if nums[i]>min && nums[i]-min>max{
max=nums[i]-min
}
if nums[i]<min{
min=nums[i]
}
}
if max==0{
return -1
}
return max
}
553. 最优除法
Go版本:
import (
"strconv"
)
func optimalDivision(nums []int) string {
// 不用排序
// 看到第一组例子
// 个人感觉是 第一个 除以后面的最小就行了
s:=""
if len(nums)<2{
return strconv.Itoa(nums[0])
}
for i:=0;i<len(nums);i++{
value:=strconv.Itoa(nums[i])
s+=value;
s+="/"
if i==0 && len(nums)>2{
s+="("
}
if len(nums)>2 && i==len(nums)-1{
s=s[:len(s)-1]
s+=")"
}
}
if s[len(s)-1]=='/'{
s=s[:len(s)-1]
}
return s;
}
剑指 Offer II 036. 后缀表达式
Go版本:
import (
"strconv"
)
func evalRPN(tokens []string) int {
stack:=[]int{}
// visitsd:=0
res:=0
if len(tokens)==1{
val,_:=strconv.Atoi(tokens[0])
return val
}
for _,value:=range tokens{
// 题目当中有效计算表达式 ,不考虑健壮性
if value=="+" || value=="-" || value=="*" || value== "/"{
res=Calulate(stack[len(stack)-2],stack[len(stack)-1],value)
stack=stack[:len(stack)-2]
stack=append(stack,res)
continue;
}else{
val,_:=strconv.Atoi(value)
stack=append(stack,val);
}
}
return res;
}
func Calulate(num1 int,num2 int,cal string)int{
if cal=="+"{
return num1+num2;
}
if cal=="-"{
return num1-num2;
}
if cal=="*"{
return num1*num2;
}
if cal=="/"{
return int(num1/num2);
}
return 0;
}
网友评论