摘要:
Java面试查漏补缺(1) 1. 无序List查询问题 如果你有一个存储了10万条无序整数数据的LinkedList,并且需要高效地查询其中一个元素,可以考虑以下两种方式: 使用HashSet进行查询: 将LinkedList中的所有元素逐个添加到HashSet中。HashSet是基于哈希表实现的数 阅读全文
摘要:
1. 什么是线程? 线程的状态与进程的状态非常相似,但线程是在进程内运行的轻量级实体。线程与进程的主要区别是线程共享相同的地址空间,而进程具有独立的地址空间。这意味着在进程中运行的每个线程都可以访问相同的变量和数据结构,而在不同进程中运行的线程则不能访问彼此的变量和数据结构。 在上下文切换期间,线程 阅读全文
摘要:
思想 当我们需要对一组数据进行排序时,常规的排序算法(如快速排序、归并排序等)通常是比较排序,即通过比较元素之间的大小关系来进行排序。但有时候我们需要对一组数据按照它们的“数字位”进行排序,此时比较排序并不是最优的选择,这时候基数排序就显得非常有效了。 基数排序是一种非比较排序算法,它根据元素的每个 阅读全文
摘要:
思路 堆是一种完全二叉树,其中每个节点的值都大于或等于其子节点的值,被称为“大根堆”;或者每个节点的值都小于或等于其子节点的值,被称为“小根堆”。在堆排序中,我们使用的是大根堆,即根节点的值是最大的元素。 堆排序的基本思路是: 建立一个大根堆。将待排序的序列构建成一个大根堆,即所有非叶子节点的值都大 阅读全文
摘要:
思路 快速排序是一种常见的排序算法,它的基本思路是通过分治的方法将一个大的问题分解成小的问题进行解决。具体而言,快速排序的核心思路是选取一个枢轴元素,将序列分为两个子序列,其中一个子序列的所有元素都比枢轴元素小,而另一个子序列的所有元素都比枢轴元素大,然后对这两个子序列分别进行递归排序,直到子序列的 阅读全文
摘要:
string 字符串在所有的语言中都非常重要,c++也不例外,接下来我们将介绍string中的常用方法 1. size() 和 length() 函数 : 他们返回字符串的真实长度,且不会因为空格而截断,这两个方法完全等价,使用及输出如下: #include<iostream> #include<s 阅读全文
摘要:
首先,用谷歌浏览器打开开发者选项,点击EventListener选项(如图所示),然后移除掉如图所示的选项,就可以让尔雅后台播放了 阅读全文
摘要:
开门见山,假设我们有一大串的由'{', '}', '[', ']', '(', ')' 这些括号构成比如像这样的"{[}][()"符号串,我们肉眼当然能看出它是非法的,那么如何使用代码来判断是否合法呢? 其实我们可以借助栈来判断这些符号串是否非法 : 1.首先我们我需要建立符号的一对一映射,如下所示 阅读全文
摘要:
这条题目是一条比较简单的题目,是博主在leetcode上面刷题所遇到的,所以在此记录一下,希望能帮助到有问题的同学。 首先我要讲一下思路: 1. 假设数组有n个元素,若这n个元素求和后mod 3 不为0 则必然表示该数组不能被三等分。 2. 我们用所有元素的和除以3,得到平均值 3. 用left 表 阅读全文
摘要:
最近在刷leetcode时,刷到了二叉树中序遍历的题目,所以特在此记录一下,下面我将给出中序遍历的递归实现和非递归(迭代)实现的代码与算法思想: 1. 中序遍历的递归实现: 1 class TreeNode(object): 2 def __init__(self, x): 3 self.val = 阅读全文