前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每日算法题:Day 16(Python)

每日算法题:Day 16(Python)

作者头像
算法工程师之路
发布2019-08-20 14:48:15
4830
发布2019-08-20 14:48:15
举报
作者:TeddyZhang,公众号:算法工程师之路

Day 16, Python知识点走起~

1

编程题

【剑指Offer】从1到n整数中1的个数

求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。

思路: 只写一个思路简单而暴力,我们首先使用一个函数去统计每一个数中1的个数,然后,我们遍历1到n的每个数,然后将所有1的统计数量相加,即可得到结果!其他思路都太绕了,也有人将这些数变成字符串统计的,不太好理解!

代码语言:javascript
复制
class Solution {
public:
    int getNum(int num){
        int res = ;
        while(num != ){
            if(num %  == ){
                res++;
            }
            num /= ;
        }
        return res;
    }

    int NumberOf1Between1AndN_Solution(int n)
    {
        if(n < )
            return ;
        int count = ;
        for(int i = ;i != n+; i++){
            count += getNum(i);
        }
        return count;
    }
};

【剑指Offer】把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

思路: 使用STL库中的sort函数,但是需要重载比较器,由于传递的参数为int类型,因此需要使用to_string将int类型变成string类型,然后进行比较,返回一个布尔值!有lambda和彷函数两种写法!

lambda版本

代码语言:javascript
复制
class Solution {
public:
    string PrintMinNumber(vector<int> numbers) {
        auto cmp = [](const int& a, const int& b){
            return to_string(a) + to_string(b) < to_string(b)+to_string(a);
        };
        sort(numbers.begin(), numbers.end(), cmp);
        string res;
        for(auto c: numbers){
            res += to_string(c);
        }
        return res;
    }
};

彷函数版本(重载小括号运算符)

代码语言:javascript
复制
class Solution {
public:
    struct{
        bool operator()(const int& a, const int& b){
            return to_string(a) + to_string(b) < to_string(b)+to_string(a);
        }
    }cmp;

    string PrintMinNumber(vector<int> numbers) {
        sort(numbers.begin(), numbers.end(), cmp);
        string res;
        for(auto c: numbers){
            res += to_string(c);
        }
        return res;
    }
};

2

概念题

【Python】python中tuple和list区别?

Python的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号,列表使用方括号。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

注意:(1)为int类型,如果表示一个tuple中有一个元素,那么应该写成(1,),加一个逗号用于区分

【Python】python中main__和__ name的区别?

1. __name__这个系统变量显示了当前模块执行过程中的名称,如果当前程序运行在这个模块中,__name__的名称就是__main__如果不是,则为这个模块的名称。

2. __main__一般作为函数的入口,类似于C语言,尤其在大型工程中,常常有if __name__ == "__main__":来表明整个工程开始运行的入口。

【Python】1/2在python2和python3中区别

在python2中等于0,相当于向下取整操作,为int类型。 在Python3中等于0.5,保留小数为,默认为float类型。

【Python】map函数的用法整理

函数语法: map(function, [iterable, …]),第一个参数为一个函数,第二个参数为一个或多个可迭代对象,并返回迭代器!

代码语言:javascript
复制
def square(x) :            # 计算平方数
    return x ** 

map(square, [,,,,])   # 计算列表各个元素的平方 [1, 4, 9, 16, 25]

map(lambda x: x ** , [, , , , ])  # 使用 lambda 匿名函数 [1, 4, 9, 16, 25]

【Python】zip()函数的用法整理

函数语法:zip([iterable, …])函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

代码语言:javascript
复制
a = [,,]
b = [,,]
c = [,,,,]
d = zip(a, b)   # [(1,4),(2,5),(3,6)]
d = zip(a, c)   # 当元素个数不一致时,按照最小的列表个数来打包[(1,4),(2,5),(3,6)]
e = zip(*d)     # 打包的反向操作过程

# 数组的转置
array = [[,],[,],[,]]
map(list, zip(*array))  # 结果为 [[1,2,3], [4,5,6]]
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法工程师之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作者:TeddyZhang,公众号:算法工程师之路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档