![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
简单算法题目
bebr
这个作者很懒,什么都没留下…
展开
-
判断一个数组中最大子序列的和(Python)
判断一个数组中最大子序列的和(数组中存在负数),例如数组[1,2,-1,4,5]的最大子序列就是它本身,和为1。利用动态规划的思想,求解子问题的最优解。设置一个临时变量temp(用于保存临时子序列的累加和),将数组中从第一个数开始累加,如果加上一个新元素后,子序列的和temp大于res的值,则更新res的值;否则检查temp是否小于0,如果是,则令temp=0.这里解释一下判断语句temp<...原创 2018-06-26 10:14:46 · 3010 阅读 · 1 评论 -
通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小
有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小。例如:var a=[100,99,98,1,2, 3];var b=[1, 2, 3, 4,5,40];分析:假设序列a,b中元素的和为sum_a和sum_b。假设aa和bb分别为序列a,b中的元素,则交换aa,bb后序列的和变为sum...转载 2018-07-18 21:56:51 · 703 阅读 · 0 评论 -
成对交换链表节点
题目:对于一组给定链表,交换相邻结点。并返回头结点示例:例如: 1->2->3->4返回: 2->1->4->3.可以用3个指针:用head指向需要交换结点的前一个结点;用n1指向需要交换的第一个结点;n2指向需要交换的第二个结点。然后不断交换n1、n2的位置即可。class LNode: def __init__(sel...原创 2018-07-18 09:59:37 · 547 阅读 · 0 评论 -
杨氏矩阵查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。例如:下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,则由于数组不含该数字,返回false。当右上角等于要查找的数字时,返回True当右上角大于要查找的数字时,排除...转载 2018-07-17 21:49:10 · 214 阅读 · 0 评论 -
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?
问题描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?解题思路n=1(只有1级台阶时) : 只有1种跳法n=2(只有2级台阶时):有2种跳法,可以跳2个1级的台阶,也可以直接跳2级台阶n=3(只有3级台阶时):分为两种情况:最后是跳1级台阶到顶,此时前面还剩2级台阶,变为了n=2的情况(有2种跳法);最后是跳2级台阶到顶,此时前面还剩1级...原创 2018-07-17 20:29:52 · 3590 阅读 · 0 评论 -
判断两个数组中是否存在相同的数字(Python)
给定两个已排好序的数组,判断两个数组中是否存在相同的数字? 第一种办法:遍历其中一个数组中的每个元素,然后在第二个数组中用二分查找法,检查是否存在相同的元素。其时间复杂度是O(nlog n).没有利用数组有序这个信息。 第二种办法:设置两个下标,分别初始化为两个数组的第一个元素,比较当前两个元素的大小,将较小元素的下标加一,如果有相同的数字,则返回True,如果直到数组末尾还没有相同的...原创 2018-06-26 09:26:48 · 15636 阅读 · 1 评论 -
按单词反转字符串(Python)
按单词反转字符串:保持每个单词内的字母顺序不变,只是将单词的顺序反转。例如:原来的字符串:That is a boy反转后变为:boy a is Thatdef reverse_word(s): s1 = s.split(' ') i, j = 0, len(s1)-1 while i < j: s1[i], s1[j] = s1[j], s1[i]...原创 2018-06-26 15:25:40 · 5075 阅读 · 0 评论 -
删除数组中重复的元素(Python)
删除一个给定数组中重复的元素:1、可以利用set函数:num = [1,2,1,4,5]print(list(set(num)))2、使用字典函数:num = [1,2,1,4,5]b = {}c = b.fromkeys(num) #fromkeys(num)是用num中的元素作为键,并给每一个键默认赋值None。print(list(c.keys()))3、def deleteSame...原创 2018-06-26 14:31:39 · 22990 阅读 · 0 评论 -
列表的逆序排列
将一个列表中的元素顺序倒置,其复杂度是O(n)。如果lst中有偶数个元素,则所有元素两两对调,中间没有剩余元素。如果lst中有偶数个元素,则所有元素两两对调,中间会剩余一个元素,让其保持在原来位置即可。def reverse_list(lst): i, j = 0, len(lst)-1 while i < j: lst[i], lst[j] = lst[j]...原创 2018-06-21 11:31:46 · 1222 阅读 · 0 评论 -
详解单链表中元素的反转(Python实现)
给定一个单链表,将其反转。其实很容易想到,只需要修改每个结点的指针指向:即令后一个结点指向前一个结点,并且将表头指针指向最后一个结点即可。这个过程可以用循环实现,也可以用递归来实现。1、用循环来实现:class LNode: def __init__(self, elem): self.elem = elem self.pnext = Nonedef r...原创 2018-06-22 17:33:05 · 2766 阅读 · 0 评论 -
判断一个链表是否存在环(Python)
判断一个链表是否存在环:例如n1->n2->n3->n4->n5->n6->n2就是一个有环的链表,环的开始结点是n6。有的博客说的一种方法:遍历链表,将遍历过的结点放在一个字典中,如果一个结点已经存在字典中,说明有环。个人认为这种方法不可行,因为如果链表中如果有重复的元素,但是重复的元素的地址是不一样的,此时并没有形成环。所以这种判断环的方法不可行。下面是正确...原创 2018-06-25 15:58:56 · 13424 阅读 · 4 评论