贪心的本质是选择每一阶段的局部最优,从而达到全局最优。
回溯法也可以叫做回溯搜索法,它是一种搜索的方式。在二叉树系列中,我们已经不止一次,提到了回溯,回溯是递归的副产品,只要有递归就会有回溯。虽然回溯法很难,很不好理解,但是回溯法并不是什么高效的算法。
因为回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案只不过进行了剪枝。
栈与队列是常用的数据结构,其中栈提供先进后出,队列提供先进先出,这样的数据结构可以解决一些需要顺序解决的问题。在java中实现底层是不一样的原因是栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。
在Java中,队列和栈是两种常见的数据结构,它们分别用于不同的场景,而它们的实现通常基于以下几种容器:
charAt(int index): Returns the character at the specified index in the string.
1 | String str = "Hello"; |
一般哈希表都是用来快速判断一个元素是否出现集合里。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。Hash法的优势就是牺牲了空间去换了时间,在工业场景中也很适用。
哈希函数打比方:就是将学生姓名映射为哈希表上的索引,通过特定编码方式生成hashCode。如果hashCode超过哈希表大小(tableSize),会进行取模操作以确保映射在表内。但如果学生数量大于表大小,可能导致多个学生映射到同一索引位置。