随笔分类 - 算法
摘要:[本文出自天外归云的博客园] 问题:将url转换成指定长度的短链,并支持短链还原 代码如下: #!/usr/bin/python # 实现url与短链相互转换的方法 import random words = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR
阅读全文
摘要:[本文出自天外归云的博客园] 题目:通过年月日,计算是当年的第几天 解法如下: #!/usr/bin/python from datetime import datetime import time # 方法一: 利用库函数 def ret_day_1(year, month, day): d =
阅读全文
摘要:[本文出自天外归云的博客园] 三个字符串,abc,def,ghi,请用多线程顺序输出:adg,beh,cfi 抛砖引玉,我的代码如下: package main import "fmt" import "sync" func printStr(a, b, c string) { strLen :=
阅读全文
摘要:[本文出自天外归云的博客园] 问题:找出字符串中最长回文子串 我的思路:抛砖引玉。找出所有子串,挨个判断是不是回文,并记录最长的回文子串 代码如下: #!/usr/bin/python def is_huiwen(s): low, high = 0, len(s)-1 while low < hig
阅读全文
摘要:[本文出自天外归云的博客园] 问题:合并两个有序数组 思路:双指针挨个比较两个数组的元素 代码如下: #!/usr/bin/python def combine_two_sorted_arr(a, b): c = [] i, j = 0, 0 while i < len(a) and j < len
阅读全文
摘要:[本文出自天外归云的博客园] 有这么一个连续有序数组,比如1,2,3,4,5,6,7,8,9。把7,8,9移到最前面,就是7,8,9,1,2,3,4,5,6。让你找出某个元素在数组中的索引,如果没有则返回-1 用python我的解法是这样的,先把那个分界点找出来,然后切成两个数组,判断下该在哪个数组
阅读全文
摘要:[本文出自天外归云的博客园] 通过列表构造树,按层级遍历打印二叉树: #!/usr/bin/python # Write Python 3 code in online editor and run it. class TreeNode(): def __init__(self, val): sel
阅读全文
摘要:[本文出自天外归云的博客园] 题目详情 构造二叉树解决这个排序问题,代码如下: package pintia import ( "strconv" "strings" ) // SortedNumber 具有排序属性的数字结构 type SortedNumber struct { Self int
阅读全文
摘要:[本文出自天外归云的博客园] 利用问题的普遍性和特殊性来求解,代码如下: 测试结果: 在微信公众号编程派一篇文章看到这个LeetCode上的问题,自己动手写写♪(・ω・)ノ
阅读全文
摘要:[文本出自天外归云的博客园] 早上起来突然想求圆周率,1单位时圆的面积。 代码如下: 运行结果接近3.1415926,dy传的越小,x_slices传的越大,就越接近。 半径为:1 初始小矩形到圆周的距离:1 - x_from_start_to_cc 其中dy代表四分之一圆中初始小矩形的高度,x_s
阅读全文
摘要:[本文出自天外归云的博客园] 一个多线程的题:定义三个线程ID分别为ABC,每个线程打印10遍自己的线程ID,按ABCABC……的顺序进行打印输出。 我的解法:
阅读全文
摘要:[本文出自天外归云的博客园] 看到一个《剑指Offer》上的问题:“遇到奇数移至最前,遇到偶数移至最后。” 我做了两种解法。一种是利用python内置函数,移动过程用了插入法,很简单。另一种是自定义与数字相关的类与函数,移动的过程用了指针思想。 代码如下: 其中: 1. 内置数据类型collecti
阅读全文
摘要:[本文出自天外归云的博客园] 第一题:给你一个字符串,打印出来前后没有空格,单词之间只有一个空格的字符串。 第二题:公鸡3元/只,母鸡4元/只,小鸡1元3只,给你money元一共多少种买法。 普通版解法如下: Pythonic版解法如下,一个算法一行: 对于第一题,大师兄后来给我一个更简单的解法:
阅读全文
摘要:[本文出自天外归云的博客园] 题1:求m以内的素数(m>2) 我还有一种效率不是最高,但是写法最短的一行版求2到100以内的素数的写法: 这种方法的优点是只有一行,缺点是判断素数的方法不好,把之前所有的数都遍历了一遍并判断是否能够整除,最后才得出是否是素数的结论。正确的方法是遍历之前的数,如果出现了
阅读全文
摘要:[本文出自天外归云的博客园] 电影异次元杀阵三部曲中密室线索反复出现笛卡尔积的运用。百度百科: 笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中的一个成员 。 笛卡尔积的符号
阅读全文
摘要:[本文出自天外归云的博客园] 思路:入栈时靠辅助栈记住主栈元素中最小的,出栈时一直pop主栈元素直到辅助栈栈顶元素出现。 代码如下(定义栈、超级栈): 运行结果:
阅读全文
摘要:[本文出自天外归云的博客园] 总结一下关于回文相关的算法: 代码如下:
阅读全文
摘要:[本文出自天外归云的博客园] 第一种思路,把两个数组合为一个数组然后再排序,问题又回归到冒泡和快排了,没有用到两个数组的有序性。(不好) 第二种思路,循环比较两个有序数组头位元素的大小,并把头元素放到新数组中,从老数组中删掉,直到其中一个数组长度为0。然后再把不为空的老数组中剩下的部分加到新数组的结
阅读全文
摘要:[本文出自天外归云的博客园] 前提:升序数组,待查元素在数组中。 二分查找:就是一个递归函数c。待查元素a,当前数组中位数b,如果b=a则返回b的索引,b>a则在b左侧的子数组中调用函数c,否则在b右侧子数组中调用函数c。 第一次思考,按着上面的思路编程后的结果: 第二次思考,简化中位数计算逻辑:
阅读全文
摘要:[本文出自天外归云的博客园] 冒泡排序:就是每次排序选最大元素到数组a的最后,排 len(a)-1 次。也就是两个for循环: 1. 外层是待排数组长度的循环,从待排数组长度(初始待排数组长度等于数组长度)到0的循环; 2. 内层是相邻元素比较的循环,从0到待排数组长度的循环。 快速排序:就是一个递
阅读全文