算法入门
枯叶笑忘书
The best defenders are also the best attackers
展开
-
LintCode 1071 词典中最长的单词(NodeJS)
export class Solution { /** * longestWord * * @param words: a list of strings * @return: the longest word in words that can be built one character at a time by other words in words */ longestWord(words) { // Write your code here原创 2021-10-18 13:34:45 · 137 阅读 · 0 评论 -
Go 语言解决 50 层台阶问题
问题描述有50层台阶,一个人每步可以上一层或者两层,问一共有多少种上楼的方式。问题分析50层可以由 49 层跨一步,也可以由48层跨两步,49层则可以由48层跨一步或者47层跨两步,…只有第1层只能由第0层跨一步到达,由此可见,当n>1 时, 第 n 层可由 n-1 层跨一步或者 n-2 层跨两步到达。codepackage mainimport ( "fmt" "time")func main() { fmt.Println("一段楼梯有n个台阶,每次只能上一层台阶或者两层台原创 2020-09-28 11:34:35 · 401 阅读 · 0 评论 -
牛顿迭代法的理解
最近没事在看一些算法的东西,看了一会,发现自己脑子一片空白,很多以前至少会一些的东西,现在都忘完了,所以写个笔记,记录此时的心得体会,便于日后回顾。牛顿迭代法,牛顿迭代法的作用就是求函数的近似根。牛顿迭代法的迭代公式为 Xn+1 = Xn - f(Xn)/f '(Xn)。下面以Java语言对函数 f(x) = x的3次方+x+1进行迭代求根。import java.math...原创 2019-09-24 14:25:57 · 1892 阅读 · 0 评论 -
二分法查找(有序数组)
对有序数组进行二分法查找的速率要远远高于遍历。下面是Java语言实现的二分查找发:public class BinarySearch { public static void main (String args[]){ int a[] ={1,2,5,8,9,13,25,36,54,61}; //数组必须有序 System.out.print...原创 2019-09-24 16:50:00 · 1063 阅读 · 0 评论 -
选择排序--分析及代码实现
选择排序 还有几个别名:简单选择排序、直接选择排序。。。由此可见,选择排序应该是所有排序算法中较为简单,容易理解的排序算法。所以,我也将选择排序作为各种排序算法的第一个来分析。思想:选择排序的思想很简单,首先遍历所有元素找到最小的(也可以是最大的,保持一致即可),将它放在数组首位,再遍历剩下的元素,找到剩下元素中最小的,放在首位后面,依次类推,直至结束。编程实现:public cl...原创 2019-09-25 16:30:04 · 244 阅读 · 0 评论 -
冒泡排序 --分析及代码实现(含改进)
冒泡排序:冒泡排序的名字和排序的过程很形象,大的“泡泡”一点点向上移动。思想: 比较相邻的两个元素,如果第一个比第二个大,则交换这两个元素。对每一对元素做相同的操作,直到没有元素需要比较。编程实现:public class bubbleSort { public static void main(String args[]){ int [] a = {2,1,...原创 2019-09-26 10:37:14 · 405 阅读 · 0 评论