- 博客(55)
- 收藏
- 关注
原创 Task2:文本预处理等练习代码
文本预处理:import collectionsimport redef read_time_machine(): with open('/home/kesci/input/timemachine7163/timemachine.txt', 'r') as f: lines = [re.sub('[^a-z]+', ' ', line.strip().lower()...
2020-02-14 20:34:32
140
原创 task1:线性回归、Softmax、多层感知机
线性回归的基本要素模型为了简单起见,这里我们假设价格只取决于房屋状况的两个因素,即面积(平方米)和房龄(年)。接下来我们希望探索价格与这两个因素的具体关系。线性回归假设输出与各个输入之间是线性关系:price=warea⋅area+wage⋅age+b数据集我们通常收集一系列的真实数据,例如多栋房屋的真实售出价格和它们对应的面积和房龄。我们希望在这个数据上面寻找模型参数来使模型的预测价格...
2020-02-14 20:20:21
115
原创 算法梳理3
信息论基础主要概念:熵:熵可以看作是随机变量的平均不确定度的度量。在平均意义下,它是为了描述该随机变量所需的比特数。联和熵:联合熵就是度量一个联合分布的随机系统的不确定度条件熵:表示在已知随机变量 X 的条件下随机变量 Y 的不确定性信息增熵:在一个条件下,信息不确定性减少的程度基尼不纯度:将来自集合中的某种结果随机应用于集合中某一数据项的预期误差率。决策树的不同分类算法基于信息论...
2019-08-12 21:18:02
125
原创 逻辑回归算法梳理
逻辑回归算法梳理1、逻辑回归与线性回归的联系与区别区别:逻辑回归预测值返回的离散值,线性回归返回的连续值联系:逻辑回归与线性回归都属于广义线性回归模型2、 逻辑回归的原理逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏3、逻辑回归损失函数推导及优化线性回归通过损失函数,设定目标函数,通过...
2019-08-09 19:13:28
150
原创 初级算法梳理——线性回归
机器学习概念:1.有监督学习: 从以标记的训练数据来训练模型。2.无监督学习: 从未标记的训练数据来训练模型。3.泛化能力: 对未知数据的预测能力。4.过拟合: 选择的模型包含参数过多,以至于该模型对于已知数据的预测很好,但对于未知数据预测很差,使得训练误差和测试误差之间差距过大。5.欠拟合: 选择的模型包含参数过少,以至于该模型对于已知数据的预测很差,使得训练误差较大。6.交叉验证:...
2019-08-07 20:49:56
111
原创 LeetCode打卡50! #976三角形最大周长
给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回 0。示例 1:输入:[2,1,2]输出:5示例 2:输入:[1,2,1]输出:0示例 3:输入:[3,2,3,4]输出:10示例 4:输入:[3,6,2,3]输出:8思路:先排序,然后看最后三个是否满足 a+b>c(a<...
2019-06-29 08:53:06
114
原创 LeetCode打卡49 #633.平方数之和
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。示例1:输入: 5输出: True解释: 1 * 1 + 2 * 2 = 5示例2:输入: 3输出: Falsebool judgeSquareSum(int c){ int a,b; b=sqrt(c); while(b*b>=c/2) { ...
2019-06-27 23:11:43
72
原创 LeetCode打卡48 #119.杨辉三角
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]代码:/** * Note: The returned array must be malloced, assume caller calls free(). */int* getRow(int rowIndex, int*...
2019-06-26 22:26:56
87
原创 LeetCode打卡47 #7.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。这题写的自己头皮发麻。。我也不知...
2019-06-25 22:24:02
93
原创 LeetCode打卡46 #342.4的幂
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。示例 1:输入: 16输出: true示例 2:输入: 5输出: false代码:bool isPowerOfFour(int num){ if(num==0) return 0; while(num%4==0){ num/=4; } if(num==...
2019-06-24 23:42:19
79
原创 LeetCode打卡45 #202.快乐数
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1...
2019-06-23 12:04:02
88
原创 leetcode打卡44 #461.汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0)↑ ↑上面的箭头指出了对应二进制位不同的位置。代码:int hammingDistance(int x,...
2019-06-22 16:08:40
63
原创 LeetCode打卡43 #258各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。代码:int fun(int x){ int i,s=0; while(x) { s+=x%10; x/=10; }...
2019-06-21 12:20:34
79
原创 LeetCode打卡41 #89. 格雷编码
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 - 010...
2019-06-20 23:18:23
106
原创 LeetCode打卡 41 #14.最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。代码:char * longestCommonPrefix(char ** strs, int strs...
2019-06-19 22:55:49
69
原创 LeetCode打卡40天 #88合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,...
2019-06-18 22:22:18
69
原创 LeetCode打卡39 #326.3的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: falsebool isPowerOfThree(int n){ if(n==0) return 0; while(n%3==0) n/=3; if(n=...
2019-06-17 23:04:09
69
原创 leetcode打卡38#58. 最后一个单词的长度
给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: “Hello World”输出: 5代码:int lengthOfLastWord(char * s){ int i=0,f=0,l=0; while(*(s+i)!='\0') ...
2019-06-16 22:37:34
73
原创 leetcde打卡37 #860. 柠檬水找零
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:[5,5,5...
2019-06-15 12:28:18
83
原创 LeetCode #8. 字符串转换整数 (atoi)
请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽...
2019-06-14 22:22:44
85
原创 LeetCode打卡 第34天 #455分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。一个小...
2019-06-13 23:00:47
59
原创 LeetCode打卡第34天 #520检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: “USA”输出: True示例 2:输入: “FlaG”输出: F...
2019-06-12 23:32:05
89
原创 ★LeetCode打卡 33 #27移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...
2019-06-11 23:42:01
213
原创 LeetCode打卡 31 #389找不同
给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例:输入:s = “abcd”t = “abcde”输出:e解释:‘e’ 是那个被添加的字母。代码:char findTheDifference(char * s, char * t){ int a[26]={0},i;...
2019-06-11 09:15:05
64
原创 LeetCode打卡31 #268.缺失数字
给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8代码;int missingNumber(int* nums, int numsSize){ int s=0,i; for(i=0;i<numsS...
2019-06-09 22:47:35
108
原创 LeetCode打卡 29 #134.加油站
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非...
2019-06-09 10:57:54
106
原创 LeetCode打卡 28 #66,加一
题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字...
2019-06-09 00:06:32
66
原创 LeetCode打卡第27天 #605.种花问题
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出: Tr...
2019-06-06 22:31:20
72
原创 LeetCode打卡第27天#219.存在重复元素
题目:给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true代码:bool containsNearbyDup...
2019-06-05 23:28:07
75
原创 LeetCode打卡第26天#319.灯泡开关
初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。 找出 n 轮后有多少个亮着的灯泡。示例:输入: 3输出: 1解释:初始时, 灯泡状态 [关闭, 关闭, 关闭].第一轮后, 灯泡状态 ...
2019-06-04 23:27:50
110
原创 LeetCode打卡第15天#204计数质数
统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。代码int countPrimes(int n){ if(n<2) return 0; int i,j,s[n],a=0; for(i=0;i<n;i++) s[i]=0; s[0]=1; ...
2019-06-03 17:55:04
89
原创 LeetCode打卡第24天 #120,三角形最小路径和
题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。代码:int minimum...
2019-06-02 23:14:56
68
原创 LeetCode打卡第23天 #64.最小路径和
题目:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路:通过公式grid[i][j]+=min(grid[i-1][j],grid[i][j-1]),遍历一...
2019-06-01 11:04:43
68
原创 LeetCode打卡22 #62.不同路径
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 ->...
2019-05-31 23:01:29
56
原创 LeetCode打卡第21天 #1025. 除数博弈
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。...
2019-05-31 08:33:40
232
原创 LeetCode打卡19#292Nim游戏
题目:你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 块 还是 3 块石头,...
2019-05-29 23:21:14
125
原创 LeetCode打卡19天#69 x的平方根
题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。(日常一水。。。)代码:int mySqrt(int x){ if...
2019-05-28 23:36:39
67
原创 LeetCode打卡18 #283 移动零
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路:从头开始,每检测到一个零,就将其和后面第一个非零元素互换,循环一遍结束。代码:void moveZeroes(int* nums, int...
2019-05-28 08:52:03
50
原创 LeetCode打卡17#1两数之和
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]代码:/...
2019-05-26 23:16:20
91
原创 LeetCode打卡第16天#215. 数组中的第K个最大元素
题目:、在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4直接排序后找出第k个最大的元素就行。代码:int findKthLargest(int* num...
2019-05-26 09:03:05
52
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人