- 1910 · 数组中出现次数最多的值
- 1609 · 链表的中间结点
- 1535 · 转换成小写字母
- 1343 · 两字符串和-1
- 1334 · 旋转数组-1
- 1331 · 英语软件
- 1300 · 巴什博弈
- 1141 · 月份天数
- 1138 · 能否放置花-1
- 936 · 首字母大写
- 822 · 相反的顺序存储
- 807 · 回文数 II
- 771 · 二阶阶乘
- 768 · 杨辉三角
- 767 · 翻转数组
- 766 · 闰年
- 764 · 计算圆周长和面积
- 594 · 字符串查找 II
- 521 · 去除重复元素
- 495 · 实现栈
- 492 · 队列维护
- 491 · 回文数
- 485 · 生成给定大小的数组
- 484 · 交换数组两个元素
- 483 · 链表转数组
- 480 · 二叉树的所有路径
- 479 · 数组第二大数
- 478 · 简单计算器
- 466 · 链表节点计数
- 463 · 整数排序
- 449 · 字符转整数
- 423 · 有效的括号序列
- 422 · 最后一个单词的长度
- 406 · 和大于S的最小子数组
- 366 · 斐波纳契数列
- 353 · 最大字母
- 298 · 寻找素数
- 297 · 寻找最大值
- 283 · 三数之中的最大值
- 263 · 小括号匹配
- 241 · 转换字符串到整数(容易版)
- 228 · 链表的中点
- 225 · 在链表中找节点
- 220 · 冰雹猜想
- 219 · 在排序链表中插入一个节点
- 214 · 数组的最大值
- 209 · 第一个只出现一次的字符
- 175 · 翻转二叉树
- 157 · 判断字符串是否没有重复字符
- 146 · 大小写转换 II
- 145 · 大小写转换
- 133 · 最长单词
- 68 · 二叉树的后序遍历
- 67 · 二叉树的中序遍历
- 66 · 二叉树的前序遍历
- 60 · 搜索插入位置
- 56 · 两数之和
- 53 · 翻转字符串
- 50 · 数组剔除元素后的乘积
- 46 · 主元素
- 39 · 恢复旋转排序数组
- 37 · 反转一个三位整数
- 25 · 打印X
- 23 · 判断数字与字母字符
- 14 · 二分查找
- 13 · 字符串查找
- 9 · Fizz Buzz 问题
- 8 · 旋转字符数组
- 3 · 统计数字-1
- 2 · 尾部的零
- 1 · A + B 问题
1910 · 数组中出现次数最多的值
1609 · 链表的中间结点
func MiddleNode(head *ListNode) *ListNode {// write your code here.if head == nil || head.Next == nil {return head}count := 0res := headfor head != nil {count++if count%2 == 0 {res = res.Next}head = head.Next}return res}
1535 · 转换成小写字母
BenchmarkToLowerCase-8 100000000 10.19 ns/op
func ToLowerCase(str string) string {// Write your code heres := []byte(str)for i := 0; i < len(s); i++ {if s[i] <= 'Z' && s[i] >= 'A' {s[i] += 32}}return string(s)}
1343 · 两字符串和-1
BenchmarkSumofTwoStrings-8 15157620 81.52 ns/op
import ("strconv")func SumofTwoStrings(a string, b string) string {// write your code hereres := ""//从string尾部开始计算indexA, indexB := len(a)-1, len(b)-1for indexA >= 0 && indexB >= 0 {temp := a[indexA] - '0' + b[indexB] - '0'res = strconv.Itoa(int(temp)) + resindexA--indexB--}if indexA >= 0 {res = a[0:indexA+1] + res}if indexB >= 0 {res = b[0:indexB+1] + res}return res}
1334 · 旋转数组-1
BenchmarkRotate-8 72459829 16.88 ns/op
func Rotate(nums []int, k int) []int {// Write your code herel := len(nums)if k%l==0 {return nums}k = k%lreverse(nums,0,l-k-1)reverse(nums,l-k,l-1)reverse(nums,0,l-1)return nums}func reverse(nums []int, left, right int) {for left < right {nums[left], nums[right] = nums[right], nums[left]left++right--}}
1331 · 英语软件
BenchmarkEnglishSoftware-8 27541000 44.32 ns/op
func EnglishSoftware(score []int, ask []int) []int {// write your code heresCount := len(score)r := make([]int, len(ask))for i, v := range ask {c := 0for _, s := range score {if s <= score[v-1] {c++}}r[i] = (c - 1) * 100 / sCount}return r}
1300 · 巴什博弈
BenchmarkCanWinBash-8 1000000000 0.2862 ns/op
func CanWinBash(n int) bool {// Write your code hereif n % 4 == 0{return false}return true}
1141 · 月份天数
BenchmarkGetTheMonthDays-8 1000000000 0.2992 ns/op
func GetTheMonthDays(year int, month int) int {// write your code hereif month == 2 {if IsLeapYear(year) {return 29}return 28}if month == 4 || month == 6 || month == 9 || month == 11 {return 30}return 31}func IsLeapYear(n int) bool {// write your code hereif n%4 == 0 && n%100 != 0 || n%400 == 0 {return true}return false}
1138 · 能否放置花-1
BenchmarkCanPlaceFlowers-8 375463814 3.448 ns/op
func CanPlaceFlowers(flowerbed []int, n int) bool {// Write your code herelength := len(flowerbed)for i, v := range flowerbed {//首尾部 当前值为0,且首部下一个index==0,尾部上一个index==0。可进行放置//中部 当前值为0 其前面一个和后面一个index均为0 方可放置if v == 0 && (i == 0 || flowerbed[i-1] == 0) && (i == length-1 || flowerbed[i+1] == 0) {n--//并将当前值置为1flowerbed[i] = 1if n <= 0 {return true}}}//n 为 0的情况return n == 0}
936 · 首字母大写
822 · 相反的顺序存储
BenchmarkReverseStore-8 12835638 97.49 ns/op
func ReverseStore(head *ListNode) []int {// write your code herearr := []int{}for head != nil {arr = append(arr, head.Val)head = head.Next}//反转切片for i, j := 0, len(arr)-1; i < j; i, j = i+1, j-1 {arr[i], arr[j] = arr[j], arr[i]}return arr}
807 · 回文数 II
BenchmarkIsPalindrome-8 27474980 43.69 ns/op
func IsPalindrome(n int) bool {// Write your code hereif n <= 1 {return true}a := toBinary(n)for i := 0; i <= len(a)-i-1; i++ {if a[i] == a[len(a)-i-1] {continue} else {return false}}return true}func toBinary(n int) []int {a := make([]int, 0, 32)for {a = append(a, n%2)n = n / 2if n == 1 {a = append(a, 1)break}}return a}
771 · 二阶阶乘
768 · 杨辉三角
BenchmarkCalcYangHuisTriangle-8 2757681 509.4 ns/op
func CalcYangHuisTriangle(n int) [][]int {// write your code heretmp := []int{1}res := [][]int{}for i := 0; i < n; i++ {res = append(res, tmp)//每行的元素个数与当前行号相等//下一行的第i个元素为上一行的第j-1个元素与第i个元素之和for j := 1; j < i; j++ {res[i] = append(res[i], res[i-1][j-1]+res[i-1][j])}//其他的元素赋初值if i > 0 {res[i] = append(res[i], 1)}}return res}
BenchmarkCalcYangHuisTriangle-8 6527358 199.4 ns/op
func CalcYangHuisTriangle(n int) [][]int {triangle := make([][]int, n)for i, _ := range triangle {triangle[i] = make([]int, i+1)// 外层triangle[i][0] = 1triangle[i][i] = 1// 内层if i >= 2 {for j := 1; j < len(triangle[i])-1; j++ {triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]}}}return triangle}
767 · 翻转数组
BenchmarkReverseArray-8 1000000000 1.138 ns/op
func ReverseArray(nums []int) {// write your code heren := len(nums) - 1for i := 0; i < len(nums)/2; i++ {nums[i], nums[n-i] = nums[n-i], nums[i]}}
766 · 闰年
BenchmarkIsLeapYear-8 1000000000 0.2808 ns/op
func IsLeapYear(n int) bool {// write your code hereif n%4 == 0 && n%100 != 0 || n%400 == 0 {return true}return false}
764 · 计算圆周长和面积
BenchmarkCalculate-8 1000000000 0.2809 ns/op
func Calculate(r int) []float64 {// write your code herePI := 3.14return []float64{float64(r) * 2 * PI, float64(r*r) * PI}}
594 · 字符串查找 II
BenchmarkStrStr-8 217115032 5.188 ns/op
import "strings"func StrStr2(source string, target string) int {// write your code herereturn strings.Index(source, target)}
521 · 去除重复元素
BenchmarkDeduplication-8 16732713 75.24 ns/op
func Deduplication(nums []int) int {if nums == nil || len(nums) == 0 {return 0}sort.Ints(nums)n := len(nums)i, j := 0, 1for ; i < n; i++ {for j < n && nums[j] == nums[i] {j++}if j >= n {break}nums[i+1] = nums[j]}return i + 1}
495 · 实现栈
492 · 队列维护
491 · 回文数
485 · 生成给定大小的数组
BenchmarkGenerate-8 30572190 37.48 ns/op
func Generate(size int) []int {// write your code hereslice := make([]int, size)for i := 0; i < size; i++ {slice[i] = i + 1}return slice}
484 · 交换数组两个元素
BenchmarkSwapIntegers-8 940372543 1.382 ns/op
func SwapIntegers(a []int, index1 int, index2 int) {// write your code herea[index1], a[index2] = a[index2], a[index1]}
483 · 链表转数组
BenchmarkToArrayList-8 13093617 89.47 ns/op
func ToArrayList(head *ListNode) []int {// write your code herearr := []int{}for head != nil {arr = append(arr, head.Val)head = head.Next}return arr}
480 · 二叉树的所有路径
479 · 数组第二大数
BenchmarkSecondMax-8 21445152 55.92 ns/op
func SecondMax(nums []int) int {// write your code heresort.Ints(nums)return nums[len(nums)-2]}
478 · 简单计算器
BenchmarkCalculate-8 1000000000 0.2865 ns/op
func Calculate(a int, op byte, b int) int {// write your code hereres := 0switch op {case '+':res = a + bcase '-':res = a - bcase '*':res = a * bcase '/':res = a / b}return res}
466 · 链表节点计数
BenchmarkCountNodes-8 837966589 1.420 ns/op
func CountNodes(head *ListNode) int {// write your code herecount := 0for head != nil {count ++head = head.Next}return count}
463 · 整数排序
BenchmarkSortIntegers-8 22559443 54.14 ns/op
func SortIntegers(a []int) {// write your code heresort.Ints(a)}
449 · 字符转整数
BenchmarkCharToInteger-8 1000000000 0.2935 ns/op
func CharToInteger(character byte) int {// write your code herereturn int(character)}
423 · 有效的括号序列
422 · 最后一个单词的长度
406 · 和大于S的最小子数组
366 · 斐波纳契数列
BenchmarkFibonacci-8 1000000000 0.2877 ns/op
func Fibonacci(n int) int {// write your code hereq, p := 0, 1if n <= 2 {return n - 1}for i := 2; i < n; i++ {sum := q + pq = pp = sum}return p}
353 · 最大字母
298 · 寻找素数
BenchmarkPrime-8 472503 2371 ns/op
func Prime(n int) []int {// write your code here//var slice []int//这个不行 会返回null 我自己本地1.18.4测试的ok,估计lintcode版本低了...slice := []int{}for i := 2; i <= n; i++ {if isPrime(i) {slice = append(slice, i)}}return slice}func isPrime(n int) bool {if n < 2 {return false}for i := 2; i <= n/i; i++ {if n%i == 0 {return false}}return true}
297 · 寻找最大值
BenchmarkMaxNum-8 24588752 51.23 ns/op
func MaxNum(nums []int) int {// write your code heresort.Ints(nums)return nums[len(nums)-1]}
283 · 三数之中的最大值
BenchmarkMaxOfThreeNumbers-8 1000000000 0.2795 ns/op
func MaxOfThreeNumbers(num1 int, num2 int, num3 int) int {// write your code heretmp := max(num1, num2)return max(tmp, num3)}func max(a, b int) int {if a > b {return a}return b}
263 · 小括号匹配
241 · 转换字符串到整数(容易版)
BenchmarkStringToInteger-8 245307522 4.713 ns/op
import "strconv"func StringToInteger(target string) int {// write your code herev, _ := strconv.Atoi(target)return v}
228 · 链表的中点
BenchmarkMiddleNode-8 397173186 2.987 ns/op
func MiddleNode(head *ListNode) *ListNode {if head == nil || head.Next == nil || head.Next.Next == nil {return head}pre := headcur := head.Next.Nextfor cur.Next != nil && cur.Next.Next != nil{pre = pre.Nextcur = cur.Next.Next}return pre.Next}
BenchmarkMiddleNode-8 169528088 6.928 ns/op
func MiddleNode(head *ListNode) *ListNode {if head == nil {return head}node := headcount := 0for head.Next != nil {count++head = head.Nextif count%2 == 0 {node = node.Next}}return node}
BenchmarkMiddleNode-8 2439154 483.7 ns/op
func MiddleNode(head *ListNode) *ListNode {if head == nil || head.Next == nil || head.Next.Next == nil {return head}count := 0m := map[int]*ListNode{}for head != nil {count++m[count] = headhead = head.Next}if count%2 == 0 {return m[count/2]} else {return m[count/2+1]}}
225 · 在链表中找节点
BenchmarkFindNode-8 1000000000 1.055 ns/op
func FindNode(head *ListNode, val int) *ListNode {// write your code herefor head != nil {if head.Val == val{return head}head = head.Next}return nil}
220 · 冰雹猜想
BenchmarkGetAnswer-8 53053446 23.72 ns/op
func GetAnswer(num int) int {// write your code here.count := 0for num != 1 {if num%2 == 0 {num /= 2} else {num = 3*num + 1}count++}return count}
219 · 在排序链表中插入一个节点
214 · 数组的最大值
BenchmarkMaxOfArray-8 707330299 1.713 ns/op
func MaxOfArray(a []float32) float32 {// write your code heremax := a[0]for i := 1; i < len(a); i++ {if a[i] > max {max = a[i]}}return max}
209 · 第一个只出现一次的字符
175 · 翻转二叉树
157 · 判断字符串是否没有重复字符
146 · 大小写转换 II
BenchmarkLowercaseToUppercase2-8 44616631 24.94 ns/op
func LowercaseToUppercase2(letters string) string {// write your code herereturn strings.ToUpper(letters)}
BenchmarkLowercaseToUppercase2-8 94741827 12.33 ns/op
func LowercaseToUppercase2(letters string) string {// write your code herestrBytes := []byte(letters)for i := range strBytes {if strBytes[i] >= 'a' && letters[i] <= 'z' {strBytes[i] -= 32}}return string(strBytes)}
145 · 大小写转换
BenchmarkLowercaseToUppercase-8 1000000000 0.3236 ns/op
func LowercaseToUppercase(character byte) byte {// write your code herereturn character-32}
133 · 最长单词
68 · 二叉树的后序遍历
67 · 二叉树的中序遍历
66 · 二叉树的前序遍历
60 · 搜索插入位置
56 · 两数之和
53 · 翻转字符串
50 · 数组剔除元素后的乘积
46 · 主元素
39 · 恢复旋转排序数组
BenchmarkName-8 100000000 11.25 ns/op
func RecoverRotatedSortedArray(nums []int) {//write your code here//1.先找到后面一个数比前面大的索引值index := 0for i := 0; i < len(nums)-1; i++ {if nums[i] > nums[i+1] {index = ibreak}}//当index不发生改变的时候,说明传入的[]int是顺序的,无需修改。if index != 0{reverse(nums, 0, index)reverse(nums, index+1, len(nums)-1)reverse(nums, 0, len(nums)-1)}}func reverse(nums []int, left, right int) {for left < right {nums[left], nums[right] = nums[right], nums[left]left++right--}}
37 · 反转一个三位整数
BenchmarkReverseInteger-8 1000000000 0.2873 ns/op
func ReverseInteger(number int) int {// write your code herereturn number%10*100 + number/10%10*10 + number/100}
25 · 打印X
BenchmarkPrintX-8 1361227 881.5 ns/op
func PrintX(n int) []string {// write your code here//1.创建一个长度为 n 的 []stringres := make([]string, n)//2.针对每一个[]里面,对其进行操作for i := 0; i < n; i++ {//3.每一个切片中,开辟大小为n的byte[]item := make([]byte, n)//4.每个[]byte中的item初始化为 ' 'for j := range item {item[j] = ' '}//5.只需对当前的行切片[]byte的首尾两个index赋值为 'X' 即可item[i] = 'X'item[n-i-1] = 'X'//6.对 []string 赋相应的 []byteres[i] = string(item)}//7.返回结果return res}
23 · 判断数字与字母字符
BenchmarkIsAlphanumeric-8 1000000000 0.2794 ns/op
func IsAlphanumeric(c byte) bool {// write your code hereif c <= 'Z' && c >= 'A' || c <= 'z' && c >= 'a' || c <= '9' && c >= '0' {return true}return false}
14 · 二分查找
13 · 字符串查找
BenchmarkStrStr-8 225371284 5.191 ns/op
func StrStr(source string, target string) int {// Write your code herereturn strings.Index(source, target)}
9 · Fizz Buzz 问题
BenchmarkFizzBuzz-8 6569154 180.0 ns/op
func FizzBuzz(n int) []string {// write your code hereif n == 0 {return []string{}}str := make([]string, n)for i := 1; i <= n; i++ {if i%15 == 0 {str[i-1] = "fizz buzz"} else if i%5 == 0 {str[i-1] = "buzz"} else if i%3 == 0 {str[i-1] = "fizz"} else {str[i-1] = strconv.Itoa(i)}}return str}
8 · 旋转字符数组
3 · 统计数字-1
import ("strconv")func DigitCounts(k int, n int) int {str := ""for i := 0; i <= n; i++ {str += strconv.Itoa(i)}count := 0for _, v := range str {//string 的本质是 []byte,取出来的是byte值//而k是int值,byte转为int值则是相应的ascii值。if k == int(v-'0'){count++}}return count}
import ("fmt""strings")func DigitCounts(k int, n int) int {count := 0strK := fmt.Sprintf("%d", k)//转成stringfor i := 0; i <= n; i++ {//利用Split包切分出k的string,并计数。count += len(strings.Split(fmt.Sprintf("%d", i), strK)) - 1}return count}
func DigitCounts(k int, n int) int {num := 0if k == 0 {num++}for i := 0; i <= n; i++ {for m := i; m != 0; {j := m % 10m = m / 10if j == k {num++}}}return num}
import ("strconv")func DigitCounts(k int, n int) int {str := strconv.Itoa(n)maxBit := 6tenPow := make([]int, maxBit)tenPow[0] = 1for i := 1; i < maxBit; i++ {tenPow[i] = tenPow[i-1] * 10}res := 0for i := 0; i < len(str); i++ {curNum := int(str[i] - '0')count := 0// i位置前的可能性if i > 0 {if k != 0 {count = n / tenPow[len(str)-i] * tenPow[len(str)-1-i]} else {count = (n/tenPow[len(str)-i] - 1) * tenPow[len(str)-1-i]}}// i位置后面的可能性if i > 0 || k != 0 {if curNum > k {count += tenPow[len(str)-i-1]} else if curNum == k {count += n%tenPow[len(str)-i-1] + 1}}res += count}if k == 0 {res++}return res}
| n值 | 10 | 100 | 1000 | 1000 |
|---|---|---|---|---|
| 一 | 346.1 ns/op | 5646 ns/op | 268662 ns/op | 25957320 ns/op |
| 二 | 1286 ns/op | 12868 ns/op | 148761 ns/op | 1532715 ns/op |
| 三 | 19.45 ns/op | 234.2 ns/op | 3011 ns/op | 37756 ns/op |
| 四 | 59.75 ns/op | 94.48 ns/op | 110.1 ns/op | 122.3 ns/op |
2 · 尾部的零
BenchmarkTrailingZeros-8 136642118 8.064 ns/op
func TrailingZeros(n int64) int64 {// write your code hereans := int64(0)for n > 0 {n /= 5ans += n}return ans}
1 · A + B 问题
BenchmarkAplusb-8 1000000000 0.2842 ns/op
func Aplusb(a int, b int) int {// write your code herereturn a+b}
