- 博客(122)
- 问答 (2)
- 收藏
- 关注
原创 产品面试:怎么用产品思维去解决产品分析题
在面试产品岗的时候,经常会被面试官问到一些产品设计题,像是为盲人设计一支笔、为解决校园的痛点而设计一款产品……总之是有各种各样的产品设计题,我们不可能在准备面试的时候把可能遇到的题目都遍历一边,所以需要整理出应对这类题目的解题思路和回答框架,以不变应万变。博主也是一只产品小白,但是应聘产品岗,面试官考察的很重要的一个点就是你是否具备产品思维,所以会通过各种各样的问题来观察你是否具备这种能力。博...
2020-03-21 18:25:02
840
原创 LeetCode 104 二叉树的最大深度
给定一个二叉树,找出它的最大深度。输入:[3,9,20,null,null,15,7]输出:3python3:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = N...
2020-02-14 17:14:40
323
原创 数据结构——红黑树(Red - Black Tree)
定义一棵“红黑树”红黑树中的节点,一类被标记为黑色,一类被标记为红色,除此之外,一颗红黑树还需要满足:1 根节点是黑色的。2 每个叶子节点都是黑色的空节点,也就是说,叶子节点不存储数据。3 任何相邻的节点都不能同时为红色,也就是说,红色节点是被黑色节点隔开。4 每个节点,从该节点到达其可达叶子节点的所有路径,都包含相同数目的黑色节点。红黑树的近似平衡平衡二叉查找树的...
2020-02-14 09:49:16
488
原创 吴恩达 机器学习课程 coursera 第四次编程作业(Neural Network Back Propagation) python实现
本文是吴恩达机器学习课程的第四次编程作业:Neural Network Back Propagation,用python实现。ex4.py为主程序入口。作业文件和训练集数据下载地址:https://github.com/toanoyx/MachineLearning-AndrewNg-coursera-python/tree/master/ex4%20NN%20back%20prop...
2020-02-13 16:12:09
877
原创 python实现二叉查找树的查找、插入、删除操作
本文用python3实现二叉查找树的查找、插入、删除操作。完整代码:https://github.com/toanoyx/BasicAlgorithm/tree/master/tree查找查找操作:先取根节点,如果它等于要查找的数那就返回。如果要查找的数比根节点的值小,就在左子树中递归查找;如果要查找的数比根节点的值大,那就在右子树中递归查找。 def search(sel...
2020-02-13 11:28:10
2357
原创 python实现二叉查找数的查找最小值、最大值操作
本文用python3实现二叉查找树的查找最小值、最大值的操作。查找最小值 def get_min(self): if self.root is None: return None node = self.root while node.left: node = node.left ...
2020-02-13 11:12:39
1557
原创 python实现二叉树的广度优先遍历(BFS)和深度优先遍历(DFS)
本文用python3实现二叉树的广度优先遍历(BFS)和深度优先遍历(DFS)。完整代码链接:https://github.com/toanoyx/BasicAlgorithm/tree/master/tree广度优先遍历广度遍历又叫层次遍历。用队列实现,依次将根,左子树,右子树存入队列,按照队列的先进先出规则来实现层次遍历。# 层次遍历(广度优先)def BFS(root):...
2020-02-12 11:59:23
4898
原创 python实现二叉树的前序、中序、后序遍历
本文用python3实现二叉树的前序、中序、后序遍历。from typing import TypeVar, Generic, Generator, OptionalT = TypeVar("T")class TreeNode(Generic[T]): def __init__(self, value: T): self.val = value ...
2020-02-12 11:32:07
493
原创 二叉树 (Binary Tree)的定义、存储、遍历
关于“树”的几个概念: 节点的高度 = 节点到叶子节点的最长路径(边数) 节点的深度 = 根节点到这个节点所经历的边的个数 节点的层数 = 节点的深度 + 1 树的高度 = 根节点的高度二叉树 每个节点最多有两个“叉”,分别是左子节点和右子节点。 满二叉树:叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两个子节点。 ...
2020-02-12 10:05:59
362
原创 设计一个可应对各种异常情况的工业级散列表
何为一个工业级的散列表?1)支持快速的查询、插入、删除操作。2)内存占用合理,不能浪费过多的内存空间。3)性能稳定,极端情况下,散列表的性能也不会退化到无法接受的情况。如何设计散列函数?首先,散列函数的设计不能太复杂。过于太复杂的散列函数,势必会消耗很多计算时间,也就间接的影响到散列表的性能。其次,散列函数生成的值要尽可能随即并且均匀分布,这样才能避免或者最小化散列冲突,即使出...
2020-02-11 11:24:07
139
原创 散列表(Hash Table)中的散列函数和散列冲突解决
散列表的英文叫“Hash Table”,平时也叫它“哈希表”或“Hash表”。散列表是用数组支持按照下标随机访问数据的特性。将键(key)转化为数组下标的映射方法就叫作散列函数,而散列函数计算得到的值就叫作散列值。散列函数定义为hash(key),其中key表示元素的键值,hash(key)的值表示经过散列函数计算得到的散列值。散列函数设计的基本要求: 1 散列函数计算得...
2020-02-11 10:40:03
311
原创 软件风险因素与项目管理者的职责
1 项目管理者职责之外(无法控制或影响)用户部门之间的冲突;项目所有权或高层的变更;人员波动2 项目管理者职责之内(有限的控制或影响)缺乏用户支持;范围/目标的变更;缺乏客户支持;缺乏高层管理者的承诺;角色和责任定义不当;采用新方法/新技术;需求波动(缺乏静态需求)3 项目管理者职责之内(完全的控制)管理执行力低或控制力差、不明确或错误理解范围/目标;不了解或不定义需求;缺乏有...
2020-02-10 12:31:59
273
原创 软件项目中的常见风险因素
本文将按照项目参与人员的角色,将风险因素分为三类:项目管理人员、项目涉及客户/用户、项目涉及员工,分组后的软件风险因素清单见下。1 项目管理人员资源的分配与评估(人、预算、时间、任务、设备……)1)成本估算不准确2)进度表不切实际或不存在3)进度表压力过大4)项目配备的人员不够/不合适5)无用的人员6)缺乏关键人员7)项目相关人员的知识/能力缺乏8)角色和责...
2020-02-10 12:25:23
4528
1
原创 软件项目风险因素的分类 (risk factor)
根据Sheta关于评估项目进度表计划安排的观点,进度表可以从四个角度去评估:(1)谁将在项目中工作 who(2)他们将做什么 what(3)项目何时开始 when start(4)项目何时完成 when end由此可以看出人对于软件项目风险识别的重要性,所以本文将识别出的软件项目风险因素按人分为三类:项目管理人员、项目涉及员工、项目涉及客户/用户,如图。项目管理者作为管...
2020-02-10 11:47:17
4363
原创 软件项目风险管理
本文通过文献综述总结了软件项目中的常见风险因素及其分类。从上个世纪发展到现在,软件早已从解决特殊问题的途径和信息数据分析的工具演化成一门独立的产业,但在提供客户所需要的软件的能力方面取得的进展却十分迟缓,软件行业一直受到无数次进度延迟、交付产品质量差的困扰。同时客户对“更好、更快、更便宜”的需求的期盼和软件复杂程度的增加也大大提高了软件开发人员提高了软件开发人员提高软件性能的标准。软件风险管理...
2020-02-10 11:42:37
8163
原创 python实现跳表(Skip List)的查找、插入、删除操作
跳表(Skip List)是对链表改造后的动态数据结构,利用空间换时间的思想,建立多级索引来提高查找、插入、删除操作的效率。一层一层索引有点类似二分查找这种分而治之的思想。在跳表中查询一个数据的时间复杂度是O( log n ),空间复杂度是O( n )。跳表通过随机函数来维护平衡性,即索引大小与原始链表大小之间的平衡,不至于性能过度退化,有效平衡执行效率和内存消耗。通过随机函数,来决定...
2020-02-09 12:15:27
1794
原创 LeetCode 23 合并K个排序链表
合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。输入:1->4->5, 1->3->4, 2->6输出:1->1->2->3->4->4->5->6python3:class Solution: def mergeKLists(self, lists: List[Li...
2020-02-08 10:59:41
191
原创 LeetCode 4 寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组nums1 和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。输入:nums1 = [1, 2] nums2 = [3, 4]输出:2.5python3:class Solution: def findMedianSor...
2020-02-08 10:32:01
120
原创 LeetCode 146 LRU缓存机制
运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的...
2020-02-08 10:19:04
138
原创 LeetCode 237 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。输入:head = [4,5,1,9], node = 5输出:[4,1,9]python3:class Solution: def deleteNode(self, node): """ :type node: ListNode ...
2020-02-08 09:38:42
135
原创 吴恩达 机器学习课程 coursera 第三次编程作业(Neural Network) python实现
本文是吴恩达机器学习课程的第三次编程作业:Neural Network,用python实现。ex3.py为主程序入口。作业文件和训练集数据下载地址:https://github.com/toanoyx/MachineLearning-AndrewNg-coursera-python/tree/master/ex3%20Neural%20Network下文是文件的源代码:...
2020-02-07 15:04:14
965
1
原创 代码异味检测方法
代码异味:由于设计缺陷或不良编码习惯而引入程序的、导致深层次质量问题的代码症状。 传统启发式方法 机器学习监督方法 概述 用检测规则区分某种气味是否对代码制品产生影响,规则源于从源代码中提取的相关度量值与一些经验上确定的阈值进行比较。 使用机器学习分类器,用一组自变量去预测一个因变量。...
2020-02-07 13:50:21
1149
原创 LeetCode 253 会议室II
给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],...] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。输入:[[0, 30],[5, 10],[15, 20]]输出:2python3:class Solution: def minMeet...
2020-02-06 14:50:16
839
原创 LeetCode 252 会议室
给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],...] (si < ei),请你判断一个人是否能够参加这里面的全部会议。输入:[[0,30],[5,10],[15,20]]输出:falsepython3:class Solution: def canAttendMeetings(self, intervals...
2020-02-06 14:35:52
309
原创 LeetCode 349 两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]python3:class Solution: def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: return l...
2020-02-06 14:25:03
162
原创 LeetCode 179 最大数
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。输入:[3,30,34,5,9]输出:9534330python3:class Solution: def largestNumber(self, nums: List[int]) -> str: s = '' for i in range(len(nums) - 1)...
2020-02-06 14:17:38
151
原创 吴恩达 机器学习课程 coursera 第二次编程作业(Logistic Regression Regularized) python实现
本文是吴恩达机器学习课程的第二次编程作业:Logistic Regression Regularized 的扩展作业,用python实现。本作业包含5个文件,分别是:ex2_reg.py 主程序入口predict.py 预测函数gradientReg.py 梯度下降算法costFunctionReg.py 代价函数算法sigmoid.py 函数计算方法作业文...
2020-02-05 20:39:05
637
1
原创 python pip安装第三方包 pip的安装与使用
本文记录了一些常见的pip使用方法。1 进入命令提示符快捷键【Wind】+【R】,搜索cmd,回车即可进入命令提示符界面。2 显示pip版本和路径pip --version3 升级pippip install -U pip4 显示帮助pip --help5 安装第三方包pip install SomePackagepython3 -m pip ins...
2020-02-05 19:37:31
316
原创 python 解决pycharm第三方库安装后import报错【ModuleNotFoundError:No module named'XXX'】
本文解决pycharm第三方库安装后依旧import报错【ModuleNotFoundError:No module named'XXX'】的问题。解决方案:1)进入【File】→【Settings】→【Project】→【Project Interpreter】。2)点击设置图标,进入【Show All】。3)点击右侧加号图标,进入【Virtualenv Enviroment】,...
2020-02-05 19:21:26
2632
原创 代码异味(code smell):代码的坏味道
定义:由于设计缺陷或不良编码习惯而引入程序的、导致深层次质量问题的代码症状。常见的代码异味:1 BLOB 实现多个职责、具有大量属性、操作、与数据类有依赖关系的类。2 依恋情结 (Feature Envy) 一个类过度使用另一个类的方法。3 过长方法 (Long Method) 函数方法的代码过长。4 过长参数列表 (Long Pa...
2020-02-05 17:12:31
6192
原创 python实现查找数组中第k大的数
本文用python3实现查找数组中第k大的数。采用快速排序的方法实现。def findKth(s, k): return findKth_c(s, 0, len(s) - 1, k)def findKth_c(s, low, high, k): m = partition(s, low, high) if m == len(s) - k: re...
2020-02-03 14:44:35
3850
原创 python实现二分查找的四种变体
本文用python3实现了二分查找的四种变体。(一)查找第一个值等于给定值的元素(二)查找最后一个值等于给定值的元素(三)查找第一个大于等于给定值的元素(四)查找最后一个小于等于给定值的元素python3:(一)查找第一个值等于给定值的元素def bSearchV1(s, k): low = 0 high = len(s) - 1 whi...
2020-02-03 14:13:17
415
原创 python实现基于二分查找的求整数平方根
本文用python3实现基于二分查找的求整数平方根。python3:def binarySearchSqrt(n): low = 1 high = 100 while low <= high: mid = low + (high - low) // 2 if mid ** 2 == n: return ...
2020-02-03 12:59:07
1220
原创 python实现二分查找(递归、非递归)
本文用python3实现了二分查找算法,分别使用递归方法和非递归方法。(一)递归实现def binarySearch(s, k): return binarySearch_c(s, 0, len(s) - 1, k)def binarySearch_c(s, low, high, k): if low > high: return -1 ...
2020-02-02 17:18:35
638
原创 python实现各种排序算法(冒泡,插入,选择,快速,归并,计数)
本文用python3实现了各种排序算法,包括冒泡排序、插入排序、选择排序、快速排序、归并排序、计数排序。(一)冒泡排序def bubbleSort(s): for i in range(len(s)): for j in range(i+1, len(s)): if s[i] > s[j]: s[i...
2020-02-02 15:38:04
330
原创 吴恩达 机器学习课程 coursera 第二次编程作业(Logistic Regression) python实现
本文是吴恩达机器学习课程的第二次编程作业:Logistic Regression 的基础作业,用python实现。本作业包含5个文件,分别是:ex2.py :程序的主入口costFunction.py :计算代价函数gradientDescent.py :梯度向下算法predict.py :预测算法ex2data1.txt :训练集作业文件和训练集数据下载地...
2020-02-01 13:35:52
704
原创 华为开发岗面试字符串排序python
给定几个国家字符串,首先将其按首字母字典顺序排序,再按照给定国家字符串逆序排序。输入:China India England America输出:America China England India输入:China输出:China America India England下面是用python实现。思路:字典排序直接用sorted()方法即可。指定字符串逆序输出,先记...
2020-01-17 23:46:48
478
原创 LeetCode 32 最长有效括号
给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。输入:)()())输出:4python:class Solution: def longestValidParentheses(self, s: str) -> int: if not s: return 0 res = 0 ...
2020-01-13 10:01:47
141
原创 LeetCode 394 字符串解码
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。输入:3[a]2[bc]输出:aaabcbcpython:class Solution: def decodeString(self, s: str) -> str: ...
2020-01-13 09:36:42
176
原创 LeetCode 53 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:[-2,1,-3,4,-1,2,1,-5,4]输出:6python:class Solution: def maxSubArray(self, nums: List[int]) -> int: for i in range(1, len(nums)...
2020-01-13 09:21:58
95
空空如也
jQuery选择器button用法,click无响应
2020-12-22
pythonpa'chong 读取json文件,包含多层嵌套怎么拆分?
2020-06-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人