第一章 蓄势待发:准备篇

常见的评测结果

结果 说明
Accepted, AC 单点测试,没通过一组数据,就会返回一个Accepted;多点测试只有通过所有的数据之后,才会返回一个Accepted。
Compile Error, CE 代码没有通过编译,看本地编译器能不能通过代码,修改之后再提交。
Wrong Answer, WA 代码有漏洞或者算法就是错的。
Time Limit Exceeded, TLE 运行时间超过允许上限。死循环的情况最常见
Running Error, RE 造成这一错误的可能性很多:非法访问内存,浮点错误,递归爆栈等。
Memory Limit Exceeded, MLE 一般数组太大会导致这个问题
Presentation Error, PE 最接近Accepted的错误,一般由多输出空格或者换行导致。
Output Limit Exceeded,OLE 一般由输出了大量调试信息或者特殊数据导致死循环输出导致。

1.5 以高效的算法为目标

由数据范围反推算法复杂度以及算法内容

1.6 轻松热身

611. 有效三角形的个数

(1)BF暴力枚举,时间复杂度O(n3) n<=1000 超时

(2)排序+ 二分查找,时间复杂度O(n2logn之间)

将数据排好序之后,利用两个指针i,j指向三角形的两条边,此时由于数据已经有序,那么只需要找到<(nums[i] + nums[j])的最后一个元素即可,假设找到的数组元素的下标为k,那么nums[j+1…k]之间的元素,都可以和nums[i]、nums[j]构成三角形

class Solution {vector<int> nums;
public:int triangleNumber(vector<int>& nums) {this->nums = nums;int n = nums.size(), res = 0;sort(nums.begin(), nums.end());for (int i = 0; i < n; i++){for (int j = i+1; j < n; j++){int low = j+1, high = n, target = nums[i] + nums[j];//二分查找>=target的第一个元素所在的位置, low-1就是<target的最大下标while(low < high){int mid = (low + high) / 2;if (nums[mid] >= target){high = mid;}elselow = mid+1;}if (low-1 > j)  //low-1就是<target的元素的最后一个位置res += low-j-1;}}return res;}
};

(3)排序 + 双指针

nums[i]固定,随着nums[j]的增加,nums[k]也会增加,固定i让j和k右移,每次k移动到最右边

算法的时间复杂度O(n2)

class Solution {
public:int triangleNumber(vector<int>& nums) {int n = nums.size(), res = 0;sort(nums.begin(), nums.end());for (int i = 0; i < n-2; i++){for (int j = i+1, k = i+2; j < n-1; j++){while(k < n && nums[k] < nums[i] + nums[j]) k++;res += max(k-j-1, 0);}}return res;}
};

1503. 所有蚂蚁掉下来前的最后一刻

tag:脑筋急转弯

1. 两数之和

(1)暴力搜索,算法的时间复杂度O(n2)

(2)哈希表,算法的时间复杂度O(n)

利用一个哈希表来存储数组中的值和对应的下标,这里需要注意的是必须是数组中两个不同的下标,所以需要在判断条件上额外添加

i != mp[target - nums[i])]

15. 三数之和

n = 3000,用暴力可能会超时,可以根据题意添加一些条件来减少不必要的判断

(1)暴力,算法的时间复杂度O(n3),超时

(2)排序 + 二分查找,算法的时间复杂度O(n2log2n)

(3)排序 + 双指针 + 优化 算法的时间复杂度 < O(n2)

(3)排序 + 哈希表 + 优化 同上

(4)DFS (只是为了锻炼代码,超时

18. 四数之和

挑战程序设计竞赛第一章 笔记相关推荐

  1. 《挑战程序设计竞赛》阅读笔记二 之 ALDS1_2_C Stable Sort

    <挑战程序设计竞赛>阅读笔记二 之 ALDS1_2_C Stable Sort 第三章 Sort I ALDS1_2_C Stable Sort 这道题目,就是为了说明 冒泡排序是稳定排序 ...

  2. 《挑战程序设计竞赛》学习笔记(二):穷竭搜索

    2.1 穷竭搜索 深度优先搜索 部分和问题 /*************************************************** User name: 寻雾启示wpf Note: ...

  3. 《挑战程序设计竞赛》学习笔记(一):准备篇

    1.1初步 抽签问题 /*************************************************** User name: 寻雾启示wpf Note: p2 枚举O(n^4) ...

  4. 挑战程序设计竞赛(第二章习题总结)

    文章目录 搜索 Curling 2.0(POJ 3009) Meteor Shower(POJ 3669) Smallest Difference(POJ 2718) Hopscotch(POJ 30 ...

  5. 挑战程序设计竞赛(第二章:2.5 图论)

    文章目录 RoadBlocks Conscription Layout RoadBlocks 参考博文:挑战程序设计竞赛: Roadblocks 参考博文:[dijkstra优化/次短路径]POJ32 ...

  6. 【操作指导 | 代码实现】挑战程序设计竞赛2:算法和数据结构

    书籍封面 第一章 前言 1. 本人衷心建议 ~~~~~~       如果你是一位初学者,我指的是你只会基本的 C/C++ 编程,即使编的很烂,这本书对于你算法和数据结构的提升非常有帮助,所涉及的每一 ...

  7. 《挑战程序设计竞赛》 读后感(转载)

    <挑战程序设计竞赛> 读后感 最近要开始准备面试找工作,算法是准备的重中之重,舍友推荐了<挑战程序设计竞赛>这本书.花了一周的时间大体过了一遍,该书真切地让我理解了" ...

  8. 挑战程序设计竞赛书的题解总结(连载中)

    写在前面的话(前言) 每天无所事事真是无趣啊,作为一个将来要征战acm的优秀青年,我感到有刷点什么的必要了! 毕竟同级的acm大佬们真是太强了,跟着老师走肯定会一直被暴打下去..去oj上刷题呢,又感觉 ...

  9. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  10. 挑战程序设计竞赛(第2版)》

    <挑战程序设计竞赛(第2版)> 基本信息 作者: (日)秋叶拓哉 岩田阳一 北川宜稔 译者: 巫泽俊 庄俊元 李津羽 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787 ...

最新文章

  1. Go-err is shadowed during return
  2. Boost:清理cleanup测试程序
  3. pytorch 4 regression 回归
  4. Atitit js nodejs 图像处理压缩缩放算法 attilax总结
  5. excel方格子插件_转载 | 18个Word/Excel/PPT插件整理
  6. 行为类模式(九):策略(Strategy)
  7. (matlab代码)绘制地震记录的F-K谱
  8. java常用开发工具大合集
  9. JMeter的取样器
  10. ArcGIS Desktop 打开崩溃,遇到严重的应用程序错误
  11. wps在线编辑梳理(此处整理了对接过后容易出错的地方)
  12. 聊聊RabbitMq动态监听这点事
  13. 存储技术(一)-基本概念和技术发展
  14. Ubuntu 如何搭建可视化界面?
  15. Java 执行 JS 脚本工具
  16. nsis制作一个外部exe启动器(exe嵌套exe)
  17. 统计语言模型,平滑方法,困惑度
  18. 守嘴不惹祸,守心不出错
  19. openofdm中complex_to_mag的分析
  20. 今天生日,教大家设计移动互联网产品

热门文章

  1. Citrix XenAPP DS角色
  2. Reg Organizer(电脑注册表清理大师)官方中文版V8.70 | win10注册表清理工具下载
  3. python怎么创建文本文件
  4. 22_多易教育之《yiee数据运营系统》用户画像-消费行为性别预测篇
  5. VC与VS的对应关系
  6. 自动开关机软件哪个好?自动开关机软件盘点
  7. 开机未发现nvidia控制面板_nvidia控制面板在哪?nvidia控制面板打不开怎么办?
  8. 数学建模——怎样学习数学建模
  9. Minecraft 1.12.2MOD Forge开发帮助文档 (持续更新)
  10. python基础教程解压密码_python学习手册视频教程压缩包解压密码?