摘要:
解题思路: 定义2个指针p、q。 有公共节点的情况: 不同部分为a, 和b,公共部分为c;让两个指针一起走,p从a走到c就转向b, q从b走到c转向a,有a + c + b = b + c + a,则p和q在公共节点相遇。 没有公共节点: p从a走到头就转向b;q从b走到头转向a。a+b=b+a,p 阅读全文
摘要:
归并排序算法模板 关于代码中mid-i+1的解释: [剑指offer 51] 数组中的逆序对 视频:AcWing 65. 数组中的逆序对 代码: class Solution { public: int merge(vector<int> &nums,int l,int r) { if(l>=r) 阅读全文
摘要:
使用 hash 映射 和队列, 字符流中出现一次的字符都会存在队列中,刚好可以利用队列的先进先出的特性。如果队列不为空,则返回队头元素,为空,则返回 ‘#’ 将字符在hash的对应位置加一计数,然后检查这个元素的个数是否满足第一次出现,若满足则直接插入队列中,否则,检查队头元素是否是字符串流中的第一 阅读全文
摘要:
思路: 搞一个hash表,统计一下每个字母出现多少次,然后再从前先后扫描一遍, 扫描到第一个只出现一次的字母,把这个字母返回就可以了。C++里面的hash表:unordered_map<> class Solution { public: char firstNotRepeatingChar(str 阅读全文
摘要:
相关知识点: 1. (1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。(2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1(3)vect 阅读全文