贪心算法1

贪心的本质是选择每一阶段的局部最优,从而达到全局最优

Read more

回溯

定义

回溯法也可以叫做回溯搜索法,它是一种搜索的方式。在二叉树系列中,我们已经不止一次,提到了回溯,回溯是递归的副产品,只要有递归就会有回溯。虽然回溯法很难,很不好理解,但是回溯法并不是什么高效的算法

因为回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案只不过进行了剪枝。

Read more

二叉树

二叉树注意点

确定那种遍历方法(BFS,DFS)如果是深度优先遍历,确定是前序后序还是中序。确定遍历方法的哪种实现(递归,迭代)

Read more

栈与队列

栈与队列是常用的数据结构,其中栈提供先进后出,队列提供先进先出,这样的数据结构可以解决一些需要顺序解决的问题。在java中实现底层是不一样的原因是栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。

在Java中,队列和栈是两种常见的数据结构,它们分别用于不同的场景,而它们的实现通常基于以下几种容器:

Read more

字符串

  • 字符串也就相当于一种字符数组,它在java中有许多的库函数比如:
  1. charAt(int index): Returns the character at the specified index in the string.

    1
    2
    String str = "Hello";
    char character = str.charAt(0); // Returns 'H'
Read more

哈希表

一般哈希表都是用来快速判断一个元素是否出现集合里。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。Hash法的优势就是牺牲了空间去换了时间,在工业场景中也很适用。

实现理论

哈希函数打比方:就是将学生姓名映射为哈希表上的索引,通过特定编码方式生成hashCode。如果hashCode超过哈希表大小(tableSize),会进行取模操作以确保映射在表内。但如果学生数量大于表大小,可能导致多个学生映射到同一索引位置。

Read more