一年是365天,如果闰年是366天。月日构成的数字最多只有366个。 第一步:构造出所有的日期(后四位) 第二步:利用回文的规则,构造出相应的年份 第三步:判断这个年份和日期在不在区间内 例如:10月28日,日期写成1028,对应回文的年份是:8201年 判断82011028这一天在不在(指定的起始日期)到(指定的终止日期)之间 程序时间复杂度为O(366)。 注意,本题的闰年是个干扰项,因为闰年只有92200229是回文数,其他的闰年都不是回文数。也就是说,把每年的2月份都按闰年来算,对结果没有影响。
使用Python完成购物车功能 需求: 1.让用户输入金额 2.选择要购买的商品,加入购物车 3.当商品的总价超过了你的金额,提示余额不足 4.让用户输入N结算,输入Q退出 goods = [ {'name':'电脑','price':1999}, {'name':'鼠标','price':15}, {'name':'键盘','price':30}, {'name':'硬盘','price':399}, {'name':'内存','price':489
分支和循环这俩结构在各语言中都有着很重要的地位,当然我之前都没有学好,这里总结一下在Python学习中对这俩结构的认识。
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
变量不说“定义”! 使用变量 “ 变量名称 = 变量类型 ” a = {'name':'tom','sex':'wm'} 变量命名规范: 首字母不能是数字,字母数字下划线组合,_1 = 1 是合法的 注意:保留字不能用,但函数名可以用,但不要用! type = 1;不报错,但是type(1)时则报错! 变量是动态赋值,num = 1; num = True 是合法的 变量接收的赋值类型,后续操作若操作引用类型,则源头修改,下游皆改 对一般赋值·后来者与数据
今天是周末,和大家一起来看一道算法题。这道题是大名鼎鼎的LeetCode的第一题,也是面试当中非常常见的一道面试题。题目不难,但是对于初学者来说应该还是很有意思,也是一道很适合入门的算法题。
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
元旦三天小长假,很多小伙伴肯定都无心学习,想假期好好出去嗨一嗨,但是,放松之余也别忘了学习python哦。
正则的定义 A:正则表达式 * 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。 * 作用:比如注册邮箱,邮箱有用户名和密码,一般会对其限制长度,这个限制长度的事情就是正则表达式做的 案例分析 B:案例演示 * 需求:校验qq号码. * 1:要求必须是5-15位数字 * 2:0不能开头 * 3:必须都是数字 * a:非正则表达式实现 * b:正则表达式实现 案例源码 package com.ifenx8.regex; publi
数组下标: 初始化一个能够容纳最大数据的int数组,数组中的值默认为0 ,然后把出现的这n个数的下标置为1,判断某个数是否存在—>直接判断这个数在数组中对应的下标是0还是1即可,1则存在,0 则不存在,那么查询的时间复杂度 O(1),也不需要遍历。
给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中❓
判断 1 这个元素在不在 a 列表中,在就返回 True(第 3 行),否则返回 False (第 5 行)
IPV4由4个Byte组成,每个Byte有8个Bit,每个Bit有0/1两种情况,也即32位0/1字符串(IPV6由128位组成);但为了显示直观方便记忆,会将4个Byte分开,将每个Byte的值转成10进制,中间用"."拼接,也就成了平时常见的IPV4地址(这样也不太容易记忆,于是后来就用字符(域名,例如:www.dashen.tech)来表示IP地址,每次请求时,通过DNS服务器,将字符(域名)解析成IP地址)
笔记视频来源——链接: link 由本人整理了一部分,记得比较仓促,若有错误,欢迎纠正,不说了,备考期末去啦。(•́︿•̀)
关于LeetCode98 做这道题之前,我反复审题,最后确认:没错,不存在什么坑,这道题确实非常非常简单,然而却被官方定义为中等难度 这一定是送分,白捡一道中等难度题,接下来,一起来轻松愉快的享受解题过程吧 关于题目 题目:98. 验证二叉搜索树 描述 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树 示例 1: 📷 输入:
给40亿个不重复的无符号整数,没排过序,给一个无符号整数,如何快速判断一个数是否在这40亿个数中
数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一个二进制比特位来代表数据是否存在的信息,如果二进制比特位为1,代表存在,为0代表不存在。
买早餐的时候会遇到,支付宝和微信的二维码贴在一起,然后扫码的时候两个二维码一起被识别出来的情况。之前的处理可能是:APP内部判断 是自己的 Scheme 的时,自动跳转;后来发现变成了识别到多个二维码时,弹出二维码选择页,用户选择具体二维码后,再跳转。
Python 中set,dict都是基于哈希表的数据结构,这两个数据结构有着广泛的应用。因此很有必要弄懂哈希表的原理。
用字典2中的值更新字典1中的值。字典2中与字典1中的键相同,则该键的值更新为字典2的,若字典2中的键字典1中并没有,那就添加该键值对。字典2不改变。
输入三个整数a,b,c,其中(a,b,c都大于0) 注意:a,b,c都有可能是三角形的斜边长度值
计算机可以用数据进行判断,若判断为真则执行特定条件中的代码块。若不为真则执行相反的指定条件内的代码块或不执行任何内容。
1. 大厂经典的面试题,给你40亿个不重复的无符号整数,让你快速判断一个数是否在这40亿个数中,最直接的思路就是遍历这40亿个整数,逐一进行比对,当然这种方式可以倒是可以,但是效率未免太低了。 另一种方式就是排序+二分的查找,因为二分查找的效率还是比较高的,logN的时间复杂度,但是磁盘上面无法进行排序,排序要支持下标的随机访问,这40亿个整数又无法加载到内存里面,你怎么进行排序呢?所以这样的方式也是不可行的。 那能不能用红黑树或者哈希表呢?红黑树查找的效率是logN,哈希表可以直接映射,查找的效率接近常数次,虽然他们查找的效率确实很快,但是40亿个整数,那就是160亿字节,10亿字节是1GB,16GB字节红黑树和哈希表怎么能存的下呢?这还没有算红黑树的三叉链结构,每个结点有三个指针,而且哈希表每个结点会有一个next指针,算上这些的话需要的内存会更大,所以用红黑树或哈希表也是无法解决问题的。
vector/list/deque 作为序列式容器(类似于线性表的存储方式) map与set作为关联式容器,里面存储的是<key,value>结构的键值对(数据之间有非常强的关联关系) 键值对:用来表示一 一对应的关系,key代表键值,value代表与key对应的信息 如:中英文互译字典,内部的英文必然有一个中文对应
怎么理解字典呢?现实生活中的字典可以通过首字母进行查询要查找的汉子,python也可以这样理解,通过”:”前的元素查找到冒号后的元素。
我们喜欢从网上下载各种各样的中文字体,但这些字体一般只设计了常用汉字,遇到生僻字时就会变成系统默认字体。如下图所示为方正静蕾简体,没有“龍鑨”两个汉字:
字典是Python中存储数据的一种方式,Python字典中可以用 keys() 命令获取一个字典中的所有的键。而元组是存放多个数据的容器,和列表很像。
5.去重 例:把列表去重 a=[1,2,3,4,1,2] a=list(set(a))
在我们今天的学习中,让我们简要了解一下Python的控制流程。考虑到我们作为有着丰富Java开发经验的程序员,我们将跳过一些基础概念,如变量和数据类型。如果遇到不熟悉的内容,可以随时查阅文档。但在编写程序或逻辑时,if-else判断和循环操作无疑是我们经常使用的基本结构。毕竟,我们初步编写的代码很多时候都是在if嵌套中度过的。随着经验的积累,我们才逐渐开始考虑如何将设计模式融入代码中进行优化。循环也是同样如此,我们的取值逻辑涉及到分页批量处理,遍历是不可或缺的。
确定DP数组含义: dp[i][j]表示str1[0..i-1]与str2[0..j-1]的LCS(最长公共子序列)长度为dp[i][j]。
1.先说下背景,肯定遇到这种情况,判断元素在不在一个集合里面,如果,集合里面的元素非常大,这个判断过程是非常耗时的,而且集合占用空间也很大。
range(a,b)的取值个数是b-a个,不包含b,比如:range(5)相当于range(0,5),取值为0、1、2、3、4。
这道题使用桶排序的思路,即 “一个萝卜一个坑”,就可以解决。可以就使用题目中的例子,在纸上写写画画,就能得出思路,只不过在编码上需要注意一些细节。
1.lstrip()—— 去掉字符串左边的空格或指定字符 2.rstrip()——去掉字符串末尾的指定字符,默认为空格,根据提供的函数对指定的序列做映射 3.str.format()格式化数字 4.find()——方法检测字符串里面是否包含子字符串,包含返回对应的索引值,不包含返回-1 5.split()——通过指定的分隔符对函数进行切片,如果指定num有参数,则分隔num+1个字符串,返回以[‘’,’’,] 6.replace()——替换指定字符,如果指定替换的参数,替换不超过参数+1个 7.isalnum()——检验字符串是否由数字和字母组成 8.isalnum()——检验字符串是否只由字母组成 9.isdigit()——检验字符串是否只由数字组成 10.endswith()——判断字符串是否以指定后缀结尾 11.strip()——移除字符串头尾指定的字符 12.rindex()——返回指定字符在字符串中最后一次出现的位置 13.rfind()——返回字符串最后一次出现的位置,如果没有匹配则返回-1 14.count()——统计字符串中某个字符出现的次数 15.find()——检测字符串是否包含子字符串,如果包含则则返回开始的索引值,反之返回-1 16.upper()——转化为大写字母 17.lower()——转化为小写字母 18.swapcase()——用于对字符串的大小写字母进行转换 19.startswith()——检验字符串是否以指定字符串开头 beg-指定位置是否为该字符 20.translate()——方法根据参数table给出的表,转换相应的字符 21.round()——返回浮点数x的四舍五入值 22.abs()——求绝对值 23.复数—求值开根号 24.查看变量内存的地址——id() 25.callable()——检查一个函数是否可以被调用 26.len()——可以返回列表,元组,字典,集合,字符串,以及range对象中的元素(项目)个数 27.max()——返回序列中的最大元素 28.min()——返回序列中的最小元素 29.sum()——返回数值型序列中所有元素之和 30.random模块中-shuffle()——将列表中的元素随机乱序 31.choice——从序列表随机选择一个元素 32.sample(seq,k)——从序列中选择不重复的K个元素 33.标准库math中-sqrt——开平方——返回的几点0的小数形式 34.import——引库 35.流控制的三种基本结构——顺序结构-循环结构-选择结构 36.python内建异常类的基类是——BaseException 37.elif表示-if和else两个单词的缩写 38.break提前结束本层循环 39.continue提前进入下一次循环 40.列表、元组、字符串、是有序序列 41.集合、字典是无序的 42.add()——给集合添加元素-如果要添加的元素已经存在,在不执行任何操作 43.集合比较大小看是否为子集,为另一方的子集的小 44.pow()——幂的运算 45.^——按位异或运算符,当两对应的二进位相异时,结果为1 46.^在两个集合中间时,相同的元素舍弃,保留两个集合各自与对方不同的字符 47.|——按位或运算符,只要对应的二个二进位有一个为1是,结果就为 48.|在两个集合中间时,将两个集合合并到一起,有两个的保留一个 49.&——按位与运算符,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 50.&在两个集合中间时,只保留相同的元素 51.集合相减——减去相同的元素 52.set——是一个无序且不重复的元素集合 53.sort()——对可进行迭代的对象进行排序操作 54.map()——根据提供的函数对指定序列做映射 55.range()——创建一个整数列表 56.del命令既可以删除列表中的一个元素,也可以删除整个列表 57.append()——在列表结尾添加元素,如果加入列表,则会将整个列表加入进去,即有[XX] 58.extend()——如果加入列表,则会把列表中的元素加入进去 59.insert()——用于将指定对象插入列表的指定位置,(谁的前面)(,)逗号前面为位置,后面为要插入的元素 60.sort()——对原列表进行排序,默认为升序, reverse = True-降序 61.pop()——默认删除最后一个元素,加入所以定位击杀 62.remove()——用于移除列表中某个值得第一个匹配项(移除哪个东西-不是索引值) 63.index()——查找某个元素在列表中的索引值 64.reverse()——反向列表中的元素,不是按照大小,是按照顺序 65.sort排列列表有=输出N
特别适合topN问题,如求海量日志中最大的100个数。既然是海量数据,那么内存中一下子无法加载所有的数据集,此时可以先读取海量数据中的100个数,建立数据集为100的小顶堆(小顶堆的对顶比所有元素都小),然后依次往堆结构中读取数字,调整堆,使其保持小顶堆,最后得到top100的最大数。
从上面输出内容,可以看出。将多行合并为一行,并且将faq记录写入到一个字典里面了。接下来就可以写入到新表格了。
用DFS在2D地图上找连通分量的问题 例4 蓝桥杯——全球变暖 题目大意是有一张NxN像素的照片,图片中”#”代表陆地,”.”代表海洋。”上下左右”4连通连成一片的陆地组成一座岛屿。如下图题
这道题迷宫中多了一些花样。一是迷宫中有陷阱,由X表示。除非处于无敌状态,否则不能经过陷阱。二是有些位置到达后会自动获得无敌状态,持续K步 我们可以看一下样例给的两个数据:
在实际开发过程中,经常需要对用户输入的数值进行限制,以确保输入的数据在合理的范围内。这不仅能防止程序错误,还能提高用户体验。作为一名测试工程师,掌握如何在 Python 中限制输入数值范围是非常有用的技能。本文将详细介绍如何使用 Python 实现这一功能,包括基础方法和高级应用。
安装好 pygame 在第一次使用 pygame 的时候,pyCharm 会自动 install pygame。
工作7年了,接触了很多开发和其他岗位的同事 ,遇到各种各样的问题。求助过他人也帮别人解决过问题,在解决问题的过程中,合理的提问方式等于事半功倍,提出问题的同时,提问者就已经了解了问题的本质或者解决方法了 ,不合理的提问方式则事倍功半,浪费提问者和解答者的时间,效率低下。本文聊聊工作中常见的错误的提问方式. 二 错误的提问姿势
我昨天面了天美L1的游戏客户端开发,面了我100分钟,问完实习、项目、计算机图形学和C++后给了我两道算法题做,一道是最长公共子序列,一道是LRU缓存,我知道是经典的题目,但是我都没敲过,我之前写过一个KV的数据库系统用过LRU(最近最少使用)缓存,用的是双向链表和哈希表解决的,当时是实现了一个双向链表,用来存储value,哈希表存储key和对应存储value的链表节点的指针,最近被访问的key就把它的节点移到链表头,超过容量就删掉链表尾
1、易于学习:python有相对较少的关键字,结构简单,有一个明确定义的语法,学起来比较简单;
学以致用,那么这几个引用在日常中我们如何进行使用呢? 接下来我会给出相关demo!!!
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 示例 1: 输入:nums = [100,4,200,1,3,2] 输出:4 解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。 示例 2: 输入:nums = [0,3,7,2,5,8,4,6,0,1] 输出:9 class Solution { public int longestConsecutive(int[] nums) {
百度百科解释他可以判断一个元素是否在集合中,后面还说了他的效率呀什么的都很好,那既然如此,我们再想象一下为什么需要它!
B. Gleb And Pizza time limit per test:2 seconds memory limit per test:256 megabytes input:standard input output:standard output Gleb ordered pizza home. When the courier delivered the pizza, he was very upset, because several pieces of sausage lay on the c
领取专属 10元无门槛券
手把手带您无忧上云