美文网首页
算法题总结day1

算法题总结day1

作者: 九日照林 | 来源:发表于2019-10-31 19:50 被阅读0次

今天开始从简单的开始总结一些简单的算法题。
我按照leetcode interview的题从简单到困难排序,依次选取题目进行解析。

倒置文本

倒置文本

这道题是将文本倒置,比如把'hello'倒置以后就是'olleh'。

解法一 直接用Python列表内置的倒序功能

这道题最简单的办法就是

class Solution(object):
    def reverse_string(s):
        return s[::-1]

这里有stackflow的解释
也就是Slice notation "[a:b:c]" means "count in increments of c starting at a inclusive, up to b exclusive". If c is negative you count backwards, if omitted it is 1. If a is omitted then you start as far as possible in the direction you're counting from (so that's the start if c is positive and the end if negative). a和b分别是开头和结尾的索引位置,c正负代表方向。

解法二 分而治之

总体思路是以中间的index为分割点,按照尾首这样的链接方式连接,最终退出循环的方式就是只剩下一个元素。

class Solution(object):
    def reverse_string(s):
        l=len(s)
        if l==1:
            return s
        return reverse_string(s[l/2:])+reverse_string(s[:l/2])

注意两点,一个是设定退出循环的条件,当只有一个的时候就要退出,第二个就是每一层要做的事情(在这里是要首尾调换)

Fizz Buzz

出处

问题描述:这道题目的是根据输入的数字做一个遍历,对于3和5的倍数分别做不同的输出。简单的思路是直接用条件语句,但注意到题干的特点是当为3和5共同的倍数的时候输出的就是它们各自的输出的连接,那么实际上应该要对除以3和5的余数是否为0先做个判断,然后再看是否连接,这样似乎更加有条理一些。

class Solutions(object):
    def fizzbuzz(n):
        return ['Fizz'*(not i%3) + 'Buzz'*(not i%5) or str(i) for i in range(n+1)]

Single Number

出处
[图片上传失败...(image-36be30-1520155685284)]
问题描述:一个由数字组成的序列,其中除了一个数字只出现了一遍,所有数字都出现了2次,请找出没有重复的那个数字。
这道题目的是检查重复的数字,其实可以用一个比较tricky的办法来解决,就是XOR(异或)。
[图片上传失败...(image-c5a53b-1520155685284)]
简单来说,异或检查是否是相同的,对于相同的数字就会返回0,不同的就会返回它们的和,又叫半加算法。并且运算的结果与顺序是无关的(可以理解,因为只是要检查是否是相同的)

A better explanation why this technique works-
Let’s say we have an array - [2,1,4,5,2,4,1].
What we are doing is essentially this-
=> 0 ^ 2 ^ 1 ^ 4 ^ 5 ^ 2 ^ 4 ^ 1
=> 0^ 2^2 ^ 1^1 ^ 4^4 ^5 (Rearranging, taking same numbers together)
=> 0 ^ 0 ^ 0 ^ 0 ^ 5
=> 0 ^ 5
=> 5 :)

因为最后要返回那个值,所以我们应该初始值为0.

class Solutions(object):
    def find_single_number(self, digit_list):
        result=0
        for num in digit_list:
            result ^= num
        return result
屏幕快照 2018-03-04 下午5.23.16.png

相关文章

  • 算法题总结day1

    今天开始从简单的开始总结一些简单的算法题。我按照leetcode interview的题从简单到困难排序,依次选取...

  • 每天一道算法题||DAY3

    今天的算法题:用分治法解决DAY1的排序题,设计更高效的算法。 输入:n个数的一个序列 输出:输入序列的一个排列<...

  • 47.算法->获取n以内所有素数个数

    day1:假期打卡失败,节后继续刷题算法->计数质数[https://leetcode-cn.com/proble...

  • 【算法】打印算法题总结

    前言 本文记录了我对打印算法题的总结。先说说什么事打印算法题,就是按照一定的规则打印二维矩阵。例如:旋转正方形矩阵...

  • 字节跳动面试必问:海量算法高频面试题精编解析(深度好文,值得收藏

    常考面试算法题类型总结 结合2019春招和秋招真题,以下几类算法题最常考,汇总了一下: 一、暴力枚举 好多鱼! D...

  • 2019-03-31

    本周学习简单总结 请一定在今天完成LeetCode全部算法题目 Leetcode算法题: 树: 递归:https:...

  • LeetCode算法题-Day1

    历经3个多月的看完了韩顺平老师的数据结构和算法.个人而言确实学到了很多了,在这里也总结下学习的过程,我们都知道算法...

  • 算法题分类总结

    迭代查找类型 1. 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序...

  • JS算法题总结

    1. 对象深克隆 2. 数组去重 方法一: 方法二: 3. 数组扁平化 方法一: 方法二: 4. 冒泡排序

  • 算法刷题总结

    参考资料:[1]. 二叉搜索树转化为排序的二叉链表(《剑指offer》27题)[2]. 快速排序的基本思想[3]....

网友评论

      本文标题:算法题总结day1

      本文链接:https://www.haomeiwen.com/subject/jzhqfftx.html