# HuaweiCodeTest **Repository Path**: alreadyhad/huawei-code-test ## Basic Information - **Project Name**: HuaweiCodeTest - **Description**: ... - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-24 - **Last Updated**: 2024-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 注意事项 ## 搁置题目清单<=5 题目文件 | 重点| 状态 qujianjiaodie | - | - shudefenjie | 算法 | todo generateFuffmanTree| 二叉树、树节点定义、算法 | todo renwuzhuanjifen | 题的算法、数据结构、优先级队列 | todo sanchashu | 数节点定义、深度遍历计算高度 | todo ## 重点需回顾清单 1. shudefenjie 2. generateFuffmanTree 3. qujianjiaodie 4. ## 总结 #### && || 符号的前后判断顺序影响 使用或 || 符号时注意,优先满足的条件放在前面; 如果满足第一条但不满足第二条,则可以视为通过;因此可以将数组越界检查等放在前面;以防后面的数组索引越界错误; 同理,使用并且 && 符号时,较难满足的符号放前面; 题目见qiaoqiaohua.cpp line 9 #### 自定义排序写法 题目:renwuzhuanjifen, #### 优先队列priority_queue #### set/unordered_set和map/unordered_map #### 输入处理 cin>>a;保存一个整数后,如果想继续getline(cin, inp); 需要添加一个cin.ignore();来回避回车符。 #### 二分查找 设置左右边界,得到中点,根据中点收缩左右边界。 ***设置边界包含问题为二分问题,以及l和r哪个作为返回结果,为两个重点。 统一用左右包含的方法,即左右都设置闭区间,即起始[0,n-1],每次根据nums[mid]与target比较。 思路:每次最终l与r必然会收缩到一点,即l=r。此时如果有target值的点,即该点;如没有,需要找到该点所在区间位置 (或题目描述为插入位置,假设target在nums中的临近左右点分别为a,b,即target应插入在b的位置), 则该点应是大于target或小于target,该点即为新中点此时r=l=m,若大于,r左移结束循环,反之l右移, 即无论如何l都会落在该点上,即所求目标点索引位置。 nums中有多个连续与target相等的值,需要找左或右的相等区间边界,则 只需在判定nums[n]==target时继续向右或左收缩,走到相同点即l=r=m时,即为边界, 最终继续判定,由于nums[mid]依然等于target,会有边界跨出或左边界跨出,返回结果为l或r。 梳理思路,用最终最小情况来理清思路。 ####