蒙特卡洛模拟方法 蒙特卡洛方法(Monte Carlo method)是指的通过大量产生随机数的模拟方法来用于数值统计计算以获得问题的近似解。蒙特卡洛方法最简单的计算就是用于pi的计算。 Pi的计算 采用蒙特卡洛方法计算…
分类:算法
递归地解决问题Solve Problem Recursively
自顶向下解决方法”Top-down” Solution 例如找一颗二叉树的最大深度: private int answer; // don't forget to initialize answer before cal…
Leetcode 1.Two Sum
/* 1.Two Sum*/ int *twoSum(int *nums, int numsSize, int target) { if (nums == NULL || numsSize <=2) { retur…
找出现奇数次的两个数
一个数组中,有两个数出现了奇数次,其余的数都出现偶数次,找出这两个数。 用异或操作可在O(n)时间复杂度和O(1)空间复杂度内找到。 设要找的两个数为A和B,第一步让所有的数异或,结果就是A^…
常用算法 --- 递归法
递归是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他算法设计方法之前先讨论它。 能采用递归描述的算法通常有这样的特征:为求解规…
LeetCode-Max Area of Island
1. Max Area of Island (Easy) Description Given a non-empty 2D array grid of 0’s and 1’s, an island is a group …
Leetcode_Palindrome_Partitioning_DFS 算法
Given a string s, partition s such that every substring of the partition is a palindrome. Retur…
查找算法
基本查找:適合數組元素無序(從頭到尾查找) 二分查找:也叫折半查找。適合數組元素有序。每次都猜中間的那個元素,比較大或者小,就能減少一半的元素。 思想: A:定義最小索引,最大索引 B:計算出中間索引 C:拿中間索引的值…
算法——插入排序
原理: 把一個 數據 arr[i] 插入到 已經有序的 arr[0] ~ arr[i – 1] 當中。此時 arr[0] ~ a…
冒泡排序算法
比較簡單,以冒泡排序開始自己的第一篇博文 /* 冒泡排序:從頭開始依次比較,若前一個值比後一個值大,則交換,否則不做任何操作,比如第一個與第二個比較,比較完成之後(交換或不交換),第二個與第三個比較,……,最後第n-1個…
Hanio 問題
Hanio 問題 問題描述 廟裏的和尚,閒得無聊,廟中有三個柱子,分別標記爲柱子A,柱子B,柱子C. 柱子A有三個盤子,這三個盤子…
位圖法--查找字符串中第一個不重複的字符
使用爲位圖法,查找字符串中第一個不重複的字符,使用位圖法,該字符是數組的index,而出現的次數則是數值 char find_first_single_char(const char *str) { int tmp[25…