友链朋友圈

推理界的3月4号

今天是3月4日,在推理界,历史的今天有如下事件: 程小青(中国)出席纪念白居易诞辰诗会65周年 妹尾韶夫(日本)诞辰130周年 詹姆斯·艾尔罗伊(美国)诞辰74周年 黑川博行(日本)诞辰73周年 半村良(日本)逝世20周年 程小青   程小青(1893—1976)【原名程青心,又名程辉斋】   籍贯:江苏吴县人。   身平介绍:少年家贫,曾在钟表店当学徒,自学外语和热爱看书,他18岁时开始从事文学写作,先是与周瘦鹃合作翻译柯南·道尔作品,后来创作《霍桑探案》,一举成名。   据史料介绍,程小青在21岁时发表的《灯光人影》,被《新闻报》举行的征文大赛选中,他小说中的侦探原名霍森,因排字工人误排,于是便成了霍桑。《霍桑探案》发表之后,程小青不断收到读者大量来信。是读者的鼓励,促使程小青先后写出了《江南燕》、《珠项圈》、《黄浦江中》、《八十四》、《轮下血》、《裹棉刀》、《恐怖的话剧》、《雨夜枪声》、《白衣怪》、《催命符》、《索命钱》、《新婚劫》、《活尸》、《逃犯》、《血手印》、《黑地牢》、《无头案》等30余部侦探小说。著名报人郑逸梅曾称赞他:“毕生精力,尽瘁于此,也就成为侦探小说的巨擘。”   程小青的创作,据另一位著名报人范烟桥称“模仿了柯南道尔的写法”,但他又塑造了“中国的福尔摩斯”。为了达到这一目的,程小青作为函授生,受业于美国大学函授科,进修犯罪心理学与侦探学的学习,他从理论上学习西欧侦探理论,在实践中又把中国旧社会发生的案例加以改造。他在谈到创作时,多次谈到自己如何设计侦探小说的名字,怎样取材与裁剪,怎样构思开头与结尾,他把美国作家韦尔斯的专著《侦探小说技艺论》和美国心理学家聂克逊博士的专著《著作人应知的心理学》作为教科书。在小说中,程小青设计了霍桑与包朗一对搭档,类似福尔摩斯与华生医生,但在案件的取材上,程小青着重描写旧中国社会弊病引发的凶杀案,注重人物的心理分析,把...

avatar 龙儿之家 发表于 2022年03月04日 11:28:18

python3学习笔记--集合、元组、字典、列表对比

数据结构 Python支持以下数据结构:列表,字典,元组,集合。 何时使用字典: 当您需要键:值对之间的逻辑关联时。 当您需要基于自定义密钥快速查找数据时。 当你的数据不断修改时。请记住,字典是可变的。 何时使用其他类型: 如果您有一些不需要随机访问的数据集合,请使用列表。当你需要一个简单的,可迭代的频繁修改的集合可以使用列表。 如果你需要元素的唯一性,使用集合。 当数据无法更改时使用元组。 很多时候,元组与字典结合使用,例如元组可能代表一个关键字,因为它是不可变的。 1、列表 使用方括号创建 words = ["Hello", "world", "!"] 使用空的方括号创建空列表 可以通过索引来访问 大多数情况下,列表中的最后一项不会带逗号。然而,在最后一项放置一个逗号是完全有效的,在某些情况下是鼓励的。 列表的索引是从0开始的,而不是从1开始的 2、集合 使用花括号或 set 函数创建 num_set = {1, 2, 3, 4, 5}word_set = set(["spam", "eggs", "sausage"]) 要创建一个空集,必须使用 set(),如 {} 是创建一个空字典。 集合是无序的,这意味着他们不能被索引。 集合不能包含重复的元素。 由于存储的方式,检查一个项目是否是一个集合的一部分比检查是不是列表的一部分更快。 集合使用 add 添加元素 。 remove 方法从集合中删除特定的元素; pop 删除随机的元素。 3、元组 元组 使用圆括号创建 ,也可以在没有圆括号的情况下创建 words = ("spam", "eggs", "sausages",)my_tuple = "one", "two", "three" 使用空括号对创建空元组。 元组比列表快,但是元组不能改变。 可以使用索引访问元组中的值。 4、字典 字典是用于将任意键映射到值的数据结构...

avatar 龙儿之家 发表于 2022年03月03日 21:55:20

购物篮分析

概述 模型概念

avatar Eurkon 发表于 2022年03月01日 10:00:00

python3学习笔记--列表切片

列表切片(List slices)提供了从列表中检索值的更高级的方法。 列表名[num1 : num2 : num3] 从索引num1到num2(不包括num2)间隔为num3的元素 num1或num2为负值代表从末尾开始算起的 num3为负值代表切片进行逆序截取 以下为具体说明 基本用法 用两个以冒号分隔的整数索引列表。 列表切片返回一个包含索引之间旧列表中所有值的新列表。 例如: squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]print(squares[2:6])print(squares[3:8])print(squares[0:1]) 结果: [4, 9, 16, 25][9, 16, 25, 36, 49][0] 和Range参数一样,在一个 slice 中提供的第一个索引被包含在结果中,但是第二个索引没有。 省略一个数字 如果省略了切片中的第一个数字,则将从列表第一个元素开始。 如果第二个数字被省略,则认为是到列表结束。 例如: squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]print(squares[:7])print(squares[7:]) 结果: [0, 1, 4, 9, 16, 25, 36][49, 64, 81] 切片也可以用在元组上 带间隔的切片 列表切片还可以有第三个数字,表示间隔。 例如: squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]print(squares[::2])print(squares[2:8:3]) 结果: [0, 4, 16, 36, 64][4, 25] [2:8:3] 包含从索引2到8间隔3的元素。 带负值 负值也可用于列表切片(和正常列表索引)。当切片(或普通索引)中的第一个和第二个...

avatar 龙儿之家 发表于 2022年03月01日 09:47:34

python3学习笔记--常用的函数

{% note info no-icon %} 本篇博客内容为学习整理笔记,学习地址为: https://www.w3cschool.cn/minicourse/play/python3course?cp=427&gid=0 {% endnote %} 字符串函数 1、join 以另一个字符串作为分隔符连接字符串列表。 例如: print(", ".join(["spam", "eggs", "ham"]))# 打印 "spam, eggs, ham" 2、replace 用另一个替换字符串中的一个子字符串。 例如: print("Hello ME".replace("ME", "world"))# 打印 "Hello world" 3、startswith 确定是否在字符串的开始处有一个子字符串。 例如: print("This is a sentence.".startswith("This"))# 打印 "True" 4、endswith 确定是否在字符串的结尾处有一个子字符串。 例如: print("This is a sentence.".endswith("sentence."))# 打印 "True" 5、lower 将字符串全部转为小写。 例如: print("AN ALL CAPS SENTENCE".lower())# 打印 "an all caps sentence" 6、upper 将字符串全部转为大写。 例如: print("This is a sentence.".upper())# 打印 "THIS IS A SENTENCE." 7、split 把一个字符串转换成一个列表。 例如: print("spam, eggs, ham".split(", "))# 打印 "['spam', 'eggs', 'ham']" 数字函数 1、max 查...

avatar 龙儿之家 发表于 2022年03月01日 09:02:19

电商转化漏斗模型

概述 模型概念

avatar Eurkon 发表于 2022年02月15日 10:00:00

力扣540:有序数组中的单一元素

2022年02月14日 力扣每日一题 题目 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。 示例 1: 输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2 示例 2: 输入: nums = [3,3,7,7,10,11,11]输出: 10 提示: 1 <= nums.length <= 105 0 <= nums[i] <= 105 进阶: 采用的方案可以在 O(log n) 时间复杂度和 O(1) 空间复杂度中运行吗? Related Topics 数组 二分查找 个人解法 根据异或的规则,相同为0,不同为1,这样把所有数都异或一遍,结果就是唯一的只出现一次的数 {% tabs categories%} public int singleNonDuplicate(int[] nums) { int result = nums[0]; for (int i = 1; i < nums.length; i++) { result ^= nums[i]; } return result;} import operatorfrom functools import reducefrom typing import Listclass Solution: def singleNonDuplicate(self, nums: List[int]) -> int: return reduce(operator.xor, nums) {% endtabs %}

avatar 龙儿之家 发表于 2022年02月14日 09:49:24

力扣1189:“气球” 的最大数量

2022年02月13日 力扣每日一题 题目 给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。 字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。 示例 1: 输入:text = "nlaebolko"输出:1 示例 2: 输入:text = "loonbalxballpoon"输出:2 示例 3: 输入:text = "leetcode"输出:0 提示: 1 <= text.length <= 10^4 text 全部由小写英文字母组成 Related Topics 哈希表 字符串 计数 个人解法 一个单词”balloon”分别需要一个'b'、'a'、'n',以及二个'l'、'o' 首先我们统计给的单词中每个字母的个数 然后统计'b'、'a'、'n'数量以及'l'、'o'除以2的最小值 {% tabs categories%} class Solution { public int maxNumberOfBalloons(String text) { int[] arrs = new int[26]; for (char ch : text.toCharArray()) { arrs[ch - 'a']++; } int count = Math.min(arrs[0], arrs[1]); count = Math.min(count, arrs['l' - 'a'] / 2); count = Math.min(count, arrs['o' - 'a'] / 2); count = Math.min(count, arrs['n' -...

avatar 龙儿之家 发表于 2022年02月13日 22:32:48

力扣1020:飞地的数量

2022年02月12日 力扣每日一题 题目 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。 返回网格中 无法 在任意次数的移动中离开网格边界的陆地单元格的数量。 示例 1: 输入:grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]输出:3解释:有三个 1 被 0 包围。一个 1 没有被包围,因为它在边界上。 示例 2: 输入:grid = [[0,1,1,0],[0,0,1,0],[0,0,1,0],[0,0,0,0]]输出:0解释:所有 1 都在边界上或可以到达边界。 提示: m == grid.length n == grid[i].length 1 <= m, n <= 500 grid[i][j] 的值为 0 或 1 Related Topics 深度优先搜索 广度优先搜索 并查集 数组 矩阵 个人解法 解题方法:广度优先算法 这道题是统计无法力扣网络边界的陆地单元格数量,我的思路是反过来统计,用总陆地数量-能离开的陆地数量 这样的话,我就可以用广度优先算法来进行解决,步骤如下: 将边界的单元格坐标加入到队列,并计数 依次从队列中取出 将取出陆地的相邻陆地加入到队列中,并计数 当队列为空时,遍历数组获取总陆地数,并减去能离开的陆地数量 {% tabs categories%} import java.util.LinkedList;import java.util.Queue;class Solution { public int numEnclaves(int[][] grid) { boolean[][] use = new bool...

avatar 龙儿之家 发表于 2022年02月12日 22:22:26

代码提交到多个git仓库

现在我们都习惯于把自己的代码放到远程仓库中,毫无疑问GitHub是首选,但由于国内的网络等各种原因,会导致我们连接不上,这时候我们会考虑放到自建的代码管理仓库或者是gitee上面。 我们还不想放弃GitHub,那么我们就要考虑将代码提交到多个仓库中。 比如,我分别在GitHub和gitee上都有格子的仓库: https://github.com/huangge1199/my-blog.git https://gitee.com/huangge1199_admin/my-blog.git 那么,我可以通过以下命令来进行添加仓库: 先添加第一个GitHub的仓库地址: git remote add origin https://github.com/huangge1199/my-blog.git 再添加gitee的仓库地址 git remote set-url --add origin https://gitee.com/huangge1199_admin/my-blog.git 这样的话我们push时,就会将代码同时推送到两个仓库了。 当然不想用命令的形式操作,也可以直接修改项目目录下隐藏目录.git中的config文件,在[remote "origin"]中添加多个仓库地址就可以了,参考如下: [remote "origin"]url = https://gitee.com/huangge1199_admin/my-blog.gitfetch = +refs/heads/*:refs/remotes/origin/*url = https://github.com/huangge1199/my-blog.git

avatar 龙儿之家 发表于 2022年02月11日 17:34:25