
编程之美 - Golang
编程之美练习,golang 语言版
shida_csdn
Keep Running ...
展开
-
寻找和为定值的多个数 (0-1 背包)
题目描述输入两个整数n和sum,从数列1,2,3.......n 中随意取几个数,使其和等于sum,要求将其中所有的可能组合列出来。分析与解法每个数都存在被选择或不被选择两种可能,分类递归即可(分治思想)package mainimport "fmt"func SumOfKNumber(n, sum, k, sumCur int, x *[]int) { if sumC...原创 2018-12-24 12:17:41 · 431 阅读 · 0 评论 -
寻找和为定值的两个数
题目描述输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(N)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。解法总结不论原序列是有序还是无序,解决这类题有以下三种办法:1、二分(若无序,先排序后二分),时间复杂度总为O(N log ...原创 2018-12-20 14:33:17 · 206 阅读 · 0 评论 -
QuickSelect 查找第 K 小的元素
Quick select 算法通常用来在未排序的数组中寻找第 k 小/第 k 大的元素。其方法类似于 Quick sort。本质上是通过多次快速排序,当某次快速排序的枢纽元素恰好下标为 k-1 时,结束查找~package mainimport "fmt"func core(nums []int, k, start, end int) int { left, right := ...原创 2018-12-19 11:09:37 · 782 阅读 · 0 评论 -
字符串的全排列
题目描述输入一个字符串,打印出该字符串中字符的所有排列例如输入字符串abc,则输出由字符a、b、c 所能排列出来的所有字符串abc、acb、bac、bca、cab 和 cbapackage mainimport "fmt"func CalcAllPermutation(str string) []string { result := []string{} core(s...原创 2018-11-20 17:34:39 · 640 阅读 · 0 评论 -
最长回文子串
题目描述给定一个字符串,求它的最长回文子串的长度。分析首先通过在每个字符的两边都插入一个特殊的符号,将所有可能的奇数或偶数长度的回文子串都转换成了奇数长度。比如 abba 变成 #a#b#b#a#, aba变成 #a#b#a#。此外,为了进一步减少编码的复杂度,可以在字符串的开始加入另一个特殊字符,这样就不用特殊处理越界问题,比如$#a#b#a#。以字符串12212321为例,...原创 2018-11-14 18:16:56 · 142 阅读 · 0 评论 -
回文判断
题目描述回文,英文palindrome,指一个顺着读和反过来读都一样的字符串,比如madam、我爱我,这样的短句在智力性、趣味性和艺术性上都颇有特色,中国历史上还有很多有趣的回文诗。那么,我们的第一个问题就是:判断一个字串是否是回文?分析与解法使用两个指针,分别从两端扫描,直到指针相遇,如果中间出现不同字符,则直接返回 false,否则返回 truepackage main...原创 2018-11-12 14:41:08 · 452 阅读 · 0 评论 -
字符串转换成整数
题目描述输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串"123",输出整数123。给定函数原型int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi。package mainimport ( "strings" "fmt")func atoi(str string) (int32, error...原创 2018-10-31 14:42:07 · 315 阅读 · 0 评论 -
字符串包含
题目描述给定两个分别由字母组成的字符串A和字符串B,字符串B的长度比字符串A短。请问,如何最快地判断字符串B中所有字母是否都在字符串A里?为了简单起见,我们规定输入的字符串只包含大写英文字母,请实现函数bool StringContains(string &A, string &B)比如,如果是下面两个字符串:String 1:ABCDString 2:BAD...原创 2018-10-30 14:53:25 · 370 阅读 · 0 评论 -
旋转字符串
题目描述给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。分析与解法三步反转法:例如,字符串 abcdef ,若要让def翻转到abc的前头,只要按照下述3...原创 2018-10-16 11:02:36 · 432 阅读 · 1 评论