2. 刷题
算法刷题
渴鱼y
求知若渴 虚心若愚
展开
-
HDU 1568 斐波拉契数列(拓展)
HDU 1568使用斐波拉契数列的递推式进行计算,而不是循环的计算出所要求的。这会超出时间限制。计算出来的结果可能会很大,应该使用double型存储。如何求一个大数的前m位呢?思路应该是下面这个样子的:当一个数非常大时,如何求出其前几位呢?如果是给定一个特定的数,当然可以逐步取出每一位即可。但是,当求xyx^{y}xy的前几位时怎么办呢?若x,y都非常大,则显然很...原创 2019-11-16 13:07:28 · 185 阅读 · 0 评论 -
UVA1589 象棋 + UVA 220 黑白棋
象棋是中国最受欢迎的两人桌游之一。该游戏代表了两支军队之间的战斗,目的是捕获敌人的“将军”。在此问题中,您会遇到游戏后期的情况。此外,红方已经“交了支票”。您的工作是检查情况是否为“将死”。现在我们介绍一些象棋的基本规则。象棋在10×9的棋盘上演奏,并将棋子放置在交叉点(点)上。左上角是(1,1),右下角是(10,9)。有两组用黑色或红色汉字标记的棋子,分别属于两个玩家。在游戏中,每个玩家依次...原创 2019-11-25 18:19:00 · 220 阅读 · 0 评论 -
最长回文子串
我的解法:这道题很快的就写出了答案,唯一不足的是时间复杂度太高了:def longestPalindrome(s): if len(s) <= 1: return s l = list() length = len(s) for i in range(0, length): start = i ...原创 2019-10-05 15:37:56 · 194 阅读 · 0 评论 -
Z字形变换
Z字形变换我的想法:找规律,看Z字形每个字符的索引在每一行上的规律,发现是有规律的。规律是有的,但是涉及到的i,j,k迭代的变量挺多的,自己没绕出来。我这里的方法对应下面官方讲解的第二个方法,可直接跳到这里。碎碎念:看了官方对规律的描述,发现它的规律与我的规律的描述差距挺大的。我的规律是相对每一行来说的,而官方的规律总是相对numRows来描述的,所以更容易表达出来,因为numRows是...原创 2019-10-05 14:39:43 · 348 阅读 · 0 评论 -
无重复字符的最长子串
我的思路:想要每次一遇到重复字符,就把之前的全部切掉,然后在后面的字符串里继续寻找一个无重复子串,然后与前面找到的一个进行比较。最终,找出最长子串。然而,实际运行并不是我想象的那样,因为for循环中的i与length都已经不能被改变,我以为随着我对s的切片,在for循环中length就随之改变…一遍遍修改程序时,总能发现特殊情况没有考虑到(因为在运行时出现了与预期结果不一致的情况,所以才发现了特...原创 2019-09-25 20:38:28 · 189 阅读 · 0 评论 -
两数相加(Python链表)
两数相加在讲解之前,要知道的:python没有专门的指针的概念,在python中每个变量都是指针。我的想法:查看或计算出每个链表的长度,然后通过做10n10^n10n运算,还原出这两个十进制数,然后进行相加,再求出结果的各个位后保存起来,进行输出操作。提示:无需将原来的十进制数还原出来,而是直接在两个链表身上做运算!因为被来就是逆序存放的,所以每个链表中的第一个元素都是个位,第二个元...原创 2019-09-25 18:31:16 · 1474 阅读 · 0 评论 -
不使用+运算符求A+B(位运算)
解题思路考察对计算机加法的理解,计算机对任何计算实际上都是二进制数之间的位运算。所以本题就是让我们从位运算的角度来考虑问题。基于二进制加法,考虑有两种情况:两二进制数相加,无进位产生。如:9 + 6: 1 0 0 1 (转换为异或运算) 1 0 0 1 + 0 1 1 0 -------------> ^ 0 1 1 0...原创 2019-09-25 12:37:17 · 710 阅读 · 1 评论 -
两数之和 & 三数之和(数组)
两数之和最初做法:两个for循环进行一个一个的试错,直到遇到符合条件的,返回。这个程序的时间复杂度是n2n^2n2.class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: returnList = [] for i in range(len(nums)...原创 2019-09-22 11:41:55 · 238 阅读 · 0 评论 -
递归&动态规划
递归的时间复杂度是很大的,是n的指数级别,随着n的增大,运算时间不可想象,比如说f(50)就要很久。时间复杂度之所以这么大,是因此计算过程中存在着重复计算。以f(10)为例,f(10)=f(9)+f(8),f(9)=f(8)+f(7)。其中的f(8)就是重复计算的。计算斐波那契数列是从后往前计算的,就是计算f(n)=f(n-1)+f(n-2),然后再递归计算f(n-1),又是从后往前计算,就是因...原创 2018-10-28 16:33:51 · 269 阅读 · 0 评论 -
1、未名湖畔的烦恼
题目描述每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式 两个整数m、n输出格式 一个整数。该整数表...原创 2018-10-28 15:50:04 · 211 阅读 · 0 评论