算法
power0405hf
这个作者很懒,什么都没留下…
展开
-
leetcode No.200
并查集leetcode第200题。看到有人写的不错:https://leetcode-cn.com/problems/number-of-islands/solution/cyu-yan-bing-cha-ji-mo-ban-jian-yi-bei-xia-lai-by-/收录下来。// LeetCode200. 岛屿数量// 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。// 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成转载 2021-04-07 20:36:04 · 257 阅读 · 0 评论 -
华为OJ 棋盘格子路径
请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。输入描述:输入两个正整数输出描述:返回结果输入例子:22输出例子:6# Pythonclass Node(object): def __init__(self, x, y):原创 2016-09-02 13:42:20 · 978 阅读 · 0 评论 -
华为OJ 两组数组相加之和相等
题目描述编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true;不满足时返回false。 输入描述:第一行是数据个数,第二行是输入的数据输出描述:返回true或者false输入例子:41 5 -5 1输出例子:true# Javaimpo原创 2016-09-02 15:30:12 · 2211 阅读 · 0 评论 -
大数
1. n!有多少个0?# 有多少个数能被5整除就有多少个0def how_many_zero(n): zero = 0 for i in range(1,n+1): if i % 5 == 0: zero += 1 print zero想了一下,上面的是错误答案,比如,25=5*5,可以分解为2个5,所以乘以25以后会得到2个0:)原创 2016-09-14 22:44:24 · 328 阅读 · 0 评论 -
最大子序列和 最大子矩阵和
1.最大子序列和如果子序列和是负数,就从下一个重新开始算。#coding: utf-8#Python 2.7def max_sum_of_subsequence(a): if not a: return False maxSub = [0] * len(a) maxSub[0] = a[0] maximum = maxSub[0] for原创 2016-09-15 13:29:57 · 499 阅读 · 0 评论 -
最大奇约数
题目: 给定一个数,如10,它的约数是1,2,5,10,最大奇约数就是5,(约数里面最大的那个奇数),现在给定一个n,求1-n内每个数的最大奇约数的和。 如输入: 7 则计算1,2,3,4,5,6,7的奇约数之和=1+1+3+1+5+3+7=21 输出: 21 idea:很明显,奇数的最大奇约数就是它本身,关键是偶数的最大奇约数怎么快速求出. 一般,一个偶数不断除以2,直到是奇数为止原创 2016-09-15 14:15:48 · 1239 阅读 · 0 评论 -
内存模型
1.C/C++参考文章1:Windows堆和栈的比较 参考文章2:内存分配——静态存储区 栈 堆 C/C++编译的程序占用的内存分为:静态存储区,栈区,堆区,文字常量区,程序代码区。静态存储区:内存在程序编译的时候已经分配好,这块内存在程序的整个运行期间都存在,主要存放静态数据,全局变量和常量。栈(Stack ):在执行函数时,函数内部局部变量的存储单元都可以在栈上创建,函数执行结束时这些变原创 2016-09-16 17:05:42 · 532 阅读 · 0 评论 -
全排列
Pythondef perm(s, first, num): if first == num - 1: print s return for i in range(first, num): s[i], s[first] = s[first], s[i] perm(s,first+1, num) s[i],原创 2016-09-01 13:56:31 · 292 阅读 · 0 评论 -
百度面试题之二叉树层次遍历(从上到下,从下到上)
1.二叉树的层次遍历 递归解法class Node(object): def __init__(self, v, left=None, right=None): self.value = v self.left = left self.right = right# 层次遍历入口函数def level_tranverse_iterate(nod原创 2016-09-22 21:44:03 · 1427 阅读 · 0 评论 -
最大回文子串
1.暴力法求出每个子串,之后判断是不是回文,找到最长的那个。def find_longest_palindromes(s): maxLength = 0 start = 0 for i in range(len(s)): for j in range(i+1, len(s)): temp1 = i temp2 =原创 2016-09-25 19:47:14 · 367 阅读 · 0 评论 -
Xgboost gbdt
xgboost比gbdt快的主要原因: 1.二阶导数 2.特征block的并行计算,加快特征选择 3.树正则化减小每棵树的复杂度原创 2016-09-30 20:35:37 · 547 阅读 · 0 评论 -
标准化,归一化和正则化
0.参考文献关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化 2017.6.3更新: 数据标准化/归一化normalization 归一化与标准化1.标准化用的最多的是 z-score标准化公式为 (X - mean)/ std计算时对每个属性(每列)分别进行。 将数据按其属性(一般是按列)减去其均值,并除以其标准差,得到的结果是,对每个属性来说,所有数据都聚集在0附近,方原创 2016-12-04 20:24:22 · 12121 阅读 · 0 评论 -
平衡三进制(可推广到n进制)
题目: 给定1,3,9,27,81这5个数,求1-121之间的任意一个数字用这5个数表示的方法,大的数字在前。 例如: 输入 19 输出:27-9+1 输入 121 输出 : 81+27+9+3+1 ps.题目是华为机试题,笔者当时由于机试时间所限,采用了打表法,这也算以空间换时间的一种。但方法比较low,回来网上查找了一下,是关于平衡进制的问题。 下面用Python和Java分别实现:原创 2016-09-13 16:20:00 · 948 阅读 · 2 评论 -
华为OJ 走迷宫 Java BFS
class Node{int x;int y;int prex; //上一个结点的坐标,为方便计算路径int prey; }public class Maze{ public static void main(String args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){原创 2016-08-21 22:54:28 · 1590 阅读 · 0 评论 -
归一化
一般的三种归一化方法: 1、线性函数转换,表达式如下: y=(x-MinValue)/(MaxValue-MinValue) 归一化至[0 1] y=2*(x-MinValue)/(MaxValue-MinValue)-1 归一化至[-1 1] 2、对数函数转换,表达式如下: y=log10 (x) 3、反余切函数转换 ,表达式如下: y=arctan(x)*原创 2015-06-05 21:42:31 · 1112 阅读 · 0 评论 -
JS 英文名排序
//写一个sortReindeer()函数,使下列数组的输入的输出为,按照英文名的姓进行排列/*即["Prancer Chua", "Blitzen Claus", "Cupid Foroutan", "Vixen Hall", "Donder Jonker", "Comet Karavani", "Dancer Moore", "Dasher Tonoyan"]*/sortReindeer原创 2015-05-26 12:43:48 · 5772 阅读 · 1 评论 -
算法心得 第二章 基础知识
2.1 操作最右边的位元将字组中值为1且最靠右的位元‘关闭’(0101 1000 => 0101 0000) x&(x-1)==0 ? x是2的幂或0 :x不是2的幂且不是0将字组中值为0且最靠右的位元‘打开’(1010 0111=>1010 1111) x|(x+1) 将字组尾部的1变成0,如果尾部没有1,则x不变(1010 0111 => 1010 0000) x&(x+1) =原创 2015-10-16 22:29:45 · 484 阅读 · 0 评论 -
图的遍历 (深度优先 广度优先)
Traversal 1 / | \ 2 3 ————5 | 41.深度优先遍历 1 / | 2 3 ————5 | 4图的邻接矩阵存储法(无向图): - 1 2 3 4 5 1 0 1 1 # 1 2 1 0 # 1 # 3 1原创 2016-05-11 16:44:31 · 687 阅读 · 0 评论 -
最短路径
摘自《啊哈!算法》 第六章1. Floyd Warshall5行求最短路径,时间复杂度O(n^3) Floyd-Warshall 算法用来找出每对点之间的最短距离。它需要用邻接矩阵来储存边,这个算法通过考虑最佳子路径来得到最佳路径。 可以在任何图中使用,包括有向图、带负权边的图。for(k = 1;k <= n; k++){ for(i = 1; i<= n; i++){原创 2016-05-13 22:07:32 · 450 阅读 · 0 评论 -
神奇的树
树:任意两个结点间有且只有一条路径的无向图。 二叉树:每个结点最多有2个子结点。 满二叉树:二叉树中的每个内部二叉树都有2个子结点,这样的二叉树叫做满二叉树。(一棵深度为h且有2^h-1个结点的二叉树。) 完全二叉树:一颗二叉树除了最右边位置上有一个或几个叶结点缺少外,其他是丰满的,那么这样的二叉树就是完全二叉树。(满二叉树是一棵完美的完全二叉树。) 1 2 34 5 6原创 2016-05-15 14:04:29 · 337 阅读 · 0 评论 -
深度优先搜索
深度优先搜索 Depth First Search(DFS)有编号为1,2,3,4的4张扑克牌和编号为1,2,3,4的4个盒子。现在需要将这4张扑克牌分别放到4个盒子里,并且每个盒子只能放一张扑克牌,一共有多少种方法?#include <stdio.h>int sum=0, n, book[10]={0},a[10]={0}; //book:手中的牌 a:盒子void dfs(int s原创 2016-05-04 16:44:13 · 391 阅读 · 0 评论 -
BFS DFS (2) 走迷宫 炸弹人
1.走迷宫迷宫的行n和列m不超过50 广度优先搜索(Breadth First Search, BFS) 用队列模拟这个过程#include<stdio.h>struct note{ int x; int y; int s;};int main(){ struct note que[2501]; int book[51][51]={0}; in原创 2016-05-05 16:11:34 · 720 阅读 · 0 评论 -
宝岛探险 BFS DFS
1.计算岛屿面积1.1 BFS#include <stdio.h>int a[10][10] = { {1,2,1,0,0,0,0,0,2,3}, {3,0,2,0,1,2,1,0,1,2}, {4,0,1,0,1,2,3,2,0,1}, {3,2,0,0,0,1,2,4,0,1}, {0,0,0,0,0,0,1,5,3,0}, {0,1,2,1,0原创 2016-05-06 11:25:21 · 1197 阅读 · 0 评论 -
苏宁 算法一面
0. 自我介绍1.项目问题介绍协同过滤算法,用户相似度的计算有什么优化,对上亿用户进行相似度计算的时候设计什么数据结构来加快寻找相似度高的用户?(一个一个比较太慢了,比如KNN中就用kd树来加快KNN的比较)2.算法基础问题2.1 信息增益和信息增益率的区别2.2 信息增益和基尼不纯度的区别基尼不纯度:这个样本被选中的概率乘以它被分错的概率。将来自集合中的某种结果随机应用于集合中某一数据项的预期误差原创 2016-08-26 12:56:38 · 2106 阅读 · 0 评论 -
华为OJ 走迷宫 DFS Java
public class Node{ int x; int y; Node(int x, int y){ this.x = x; this.y = y; }}public class MazeDFS{ public static void main(String[] args){ Scanner sc = n原创 2016-08-22 00:17:56 · 1483 阅读 · 1 评论 -
排序算法的比喻
昨晚和室友讨论了一下简单的排序算法,他打的比方我觉得很有道理~冒泡排序法:就像上学的时候做操排队,老师说,大家按身高从矮到高排一下,然后转一圈,如:现在是ABCDE5个人,两个两个比一下,发现C比D高,CD要换个位置,即ABDCE,换了以后发现,C又比E高,又换个位置,ABDEC,这时C是最高的,然后在前4个里再比较。。。插入排序法:大家都打过80分,每人一张一张摸牌,比如你已经摸到了3,5,8,第原创 2015-04-24 12:08:17 · 403 阅读 · 0 评论