首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《算法》读书笔记:1.1 基础编程模型

1 Java 程序的基本结构 一段 Java 程序(类)是一个「静态方法库」(函数)或者一个「数据类型定义」。...为了创建静态方法库和定义数据类型,会用到以下组成部分: 原始数据类型 语句 数组 静态方法 字符串 输入输出 数据抽象 我们将在本节学习前六种语法,数据抽象在下一篇介绍。...=) 小于(<) 小于等于(<=) 大于(>) 大于等于(>=) 这些运算符被称为「混合类型」运算符,因为它们的结果是布尔型,而不是参与比较的数据类型。...4.3 使用数组 在使用数组时要注意:数组一经创建,其大小就是固定的。程序能够通过 a.length 获取数组 a[] 的长度。Java 会自动进行边界检查,访问超出边界的位置时会抛出异常。...算法找到被查找的键或是查找范围为空时则该过程结束。 下图可视化了有序数组中的二分查找: ?

2.4K20

蓝桥杯-02-蓝桥杯CC++组考点与14届真题

考查范围包括: 考查范围包括:以下范围中标*的部分只限于 C/C++研究生组、C/C++大学 A 组。 C/C++程序设计基础:包含使用 C/C++编写程序的能力。...C/C++选手请务必选择正确的编译器,如果编译器选择错误,可能导致编译不通过而得 0 分。 C/C++选手请务必让主函数的返回值为 0,当返回非 0 时会认为程序执行错误而得 0 分。...说明:以上是问题描述的部分,选手做题时可以直接手算答案,即按照题目意思一步一步切割, 最后得到切出的矩形个数,手算可能花费一些时间。如果选手在手算时使用除法等方式加快速度,时 间可能少一些。...必须仔细阅读题目的输入、输出要求以及示例,不要随意添加不需要的内容。 (4)使用 C/C++语言时,注意主函数需要 return 0。...(5)C 组与 C++组选手提交答案时,一定要注意选择 C、C++或 C++11(即编译器类型)。因为使用机器阅卷,很可能会因为选手选择了错误的编译器,而使自己代码无法编译通过。

70810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【优选算法篇】在分割中追寻秩序:二分查找的智慧轨迹

    结束条件: 当 left > right 时,说明查找范围为空,目标值不存在,返回 -1。...结束条件:当 left == right 时,查找结束。此时需要检查 nums[left] 是否等于目标值,如果相等,返回该位置;否则返回 -1。...示例 1: 输入:nums = [1,3,5,6], target = 5 输出:2 示例 2: 输入:nums = [1,3,5,6], target = 2 输出:1 示例 3: 输入:nums =...处理插入位置的返回值:当 nums[left] 小于 target 时,表示目标值应插入到 left + 1 的位置,否则插入到 left 位置。...模板记忆技巧 三段式与两段式的选择: 在面对不同题目时,不要强行套用模板。通过分析问题中的搜索区间变化,合理选择三段式(左右都参与)或两段式(左右边界一边不参与)。

    13110

    备战蓝桥杯————二分搜索(一)

    示例 1: 输入: nums= [-1,0,3,5,9,12], target= 9 输出: 4 解释: 9 出现在 nums中并且下标为 4 示例 2: 输入: nums = [-1,0,3,5,9,12...为什么循环条件是 left 而不是 left <= right? 答:这是因为我们在初始化右边界时使用了 nums.length 而不是 nums.length - 1。...当 left == right 时,搜索区间为空,循环终止。 2. 为什么没有返回 -1的操作?如果数组中不存在目标值怎么办? 答:在返回之前,我们需要检查 nums[left]是否等于目标值。...同时,我们需要确保索引不越界。 3. 为什么更新边界时使用 left = mid + 1 和 right = mid?...答:关键在于处理 nums[mid] == target 的情况时,我们不立即返回,而是缩小搜索区间的上界 right,继续在左侧区间 [left, mid)`中搜索。 5.

    10610

    每日算法题:Day 4

    1 编程题 【剑指Offer】斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。...n<=39 思路: 对于一个简单的斐波那契数列,我们需要考虑很多不是算法的问题,而是算法完整性,如果为了保存数据,我们需要一个很大的类型long long,而不是int,由于题中说明了n的范围,所以我们不考虑...思路: 这个方法其实质也类似于斐波那契数列,但这次我们使用递归的方法来解决,首先寻找递归的终止条件,n可以一次减小1也可以减小2,当n小于1时,就算一种结果并返回1。...__new__ 方法创建实例对象供__init __方法使用,__ init__方法定制实例对象。 __new__是一个静态方法,而__init__是一个实例方法。...希望大家多多支持哦~ 公众号简介:分享算法工程师必备技能,谈谈那些有深度有意思的算法,主要范围:C++数据结构与算法/深度学习(CV),立志成为Offer收割机!

    51620

    渗透测试人员一篇文章入门python语言

    动态类型语言 在运行阶段才做数据类型检查,即编程时不需要指定数据类型,如Python。 2.1.2....静态类型语言 静态类型语言:在编译阶段会对数据类型进行检查,即编程时就要声明变量的数据类型,如C/C++、Java。 2.2.语法特点 2.2.1. 不需要声明数据类型 ? 2.2.2....异常的含义 当程序中出现错误时,为了避免程序继续错误地执行,程序会中断自己并输出该错误的提示信息(抛出一个异常)。 因此,异常处理机制本质上是一种保护机制。 3.5.2. 为什么要处理异常?...首先,告诉程序如何处理指定的错误 (以更优雅的方式去处理错误,而不是强制抛出异常) 其次,抛出的异常会暴露很多重要信息,包括文件路径、代码内容和错误信息等 3.5.3....输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。 4.1.2.

    1K41

    🛠️Java Integer 必填校验的重要性与实现策略

    自定义校验器:当内置校验无法满足需求时,可以创建自定义校验器,根据具体业务逻辑实现更复杂的校验规则。异常处理:通过捕获校验过程中抛出的异常,确保程序在遇到无效数据时能够优雅地处理,而不会崩溃。...应用场景演示 在电商平台上,用户创建订单时必须提供有效的订单金额。如果用户输入了null或无效金额,系统将拒绝请求并提示相应的错误信息。这不仅保护了系统的稳定性,也为用户提供了良好的体验。...,确保输入不为空。范围检查: 接着,方法检查value是否在指定的范围内(min和max之间)。...如果value小于min或大于max,则抛出IllegalArgumentException,并提供相应的错误信息,指出有效范围。...输入超出范围的值时,抛出相应的异常提示。合法输入应正常通过校验,不产生任何异常。测试代码分析 在本次的代码演示中,我将会深入剖析每句代码,详细阐述其背后的设计思想和实现逻辑。

    17621

    从基础入门到学穿C++(C++语法基础篇)【超详细】【一站式速通】

    , MSDN C++基本语法 C++的头文件 #include//输入输出流 using namespace std;//标准的命名空间 cout、cin、endl cout和cin...使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。...return 0; } 如何合理使用std命名空间?...比如说我们在写一般的代码时,包含了std(standard)的命名空间,那么我们就不能再把cout等等定义为变量或者函数名,但是如果不包含这个头文件,我们可以无限制的使用这些名称。...<< endl; return 0; } 上述的代码表明,编译器会将cout解释为你定义的变量,而不是标准库中的对象,从而导致编译错误。

    81910

    python基础——条件判断和循环【if,while,for,range】

    elif 用于检查其他条件,else 用于在前面条件都不满足时执行。...运行结果: 二,while语句 1,基本介绍 在 Python 中,while 语句用于重复执行一段代码。只要指定的条件为 True,就一直循环执行,当条件变为 False 时,循环停止。...while 语句的基本结构如下: while 条件: # 循环体,当条件为 True 时执行 # ... 2,例子 下面是一个简单的例子,演示了如何使用 while 语句输出数字 1 到...然后,我们使用 while 循环来检查 i 是否小于或等于 5。只要这个条件为 True,就会执行循环体,即输出 i 的值并将其增加 1。...3,注意事项 (1)范围:for 循环通常用于遍历序列或可迭代对象的元素。如果使用非迭代对象,会导致错误。

    37510

    《C++20:编程世界的新变革与应用场景探索》

    C++ 作为一种广泛应用的编程语言,一直在不断演进和发展。...这使得模板的使用更加安全和直观,在编译时就能检测到类型不匹配的错误,大大提高了代码的可靠性。 应用场景示例:在编写通用算法库或数据结构库时,概念非常有用。...例如,一个用于排序的模板函数,可以使用概念来限定输入的参数必须是可比较的类型。这样,当开发者使用该函数时,如果传入的类型不满足可比较的条件,编译器会直接报错,避免了在运行时才发现错误的尴尬。...应用场景示例:在日志记录、错误信息输出以及用户界面显示等场景中,格式化库非常有用。...如果左操作数小于右操作数,则返回值小于 0;如果左操作数大于右操作数,则返回值大于 0;如果左操作数和右操作数相等,则返回值等于 0。

    11310

    C++:C++入门基础

    数字图像处理 数字图像处理中涉及到大量数学矩阵方面的运算,对CPU算力要求比较高,主要的图像处理算法库和开源库等都是C/C++写的,比如:OpenCV、OpenGL等,大名鼎鼎的Photoshop就是...使用方法如下 六、C++输入&输出 在c语言中,我们输入输出会用到scanf和printf,而且还得用到占位符,比较麻烦,我们的祖师爷为了方便我们使用,设置了cout和cin来进行输入输出 其实std是...使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含头文件以及按命名空间使用方法使用std。...使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。 5....,而第二段代码const pstring* p2转化后是char* const *p2 ,p2相等于是一个二级指针,但是const并没有直接限制p2,而是限制了他的指向,所以不初始化是可以的!!

    36410

    【C++】————IO流

    _age << endl; return 0; } 这段代码和上一段代码相比只是最后的输出使用了 cout,跟上面一样,如果输入过长也会导致越界写入,除此之外,就算输入的长度在合法的范围内,打印出来的结果也不是我们想要的...,原因是 cout 在输出时是根据 string 的 size 来输出的,而 scanf 输入时并没有改变string 的 size,所以打印结果不是我们想要的,上面的 printf 如果输入的长度在合法的范围内...③ 连续输入时,vs系列编译器下在输入ctrl+Z时结束 ④ scanf函数当读取发生错误或读到文件末尾,会返回EOF(-1) 2....使用itoa()函数 使用sprintf()函数 但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好界定,而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。...5.你开始炫耀自己,往往都是灾难的开始,就像老子在《道德经》里写到:光而不耀,静水流深。

    8310

    《C++11》范围基 for 循环详解

    C++11 引入的范围基 for 循环(Range-based for loop)是一种简洁而强大的语法,用于遍历容器(如数组、向量、列表、集合等)。...它不仅提高了代码的可读性和可维护性,还减少了常见的错误。本文将深入探讨范围基 for 循环的语法、用法、优缺点、适��场景以及一些实际应用示例。1....优缺点分析优点简洁性:相比传统的 for 循环,范围基 for 循环的语法更加简洁,减少了代码的复杂性。安全性:范围基 for 循环自动处理容器的边界,避免了因手动管理索引而可能导致的越界错误。...不适用于所有场景:在某些情况下,例如需要在遍历过程中删除元素时,范围基 for 循环可能不适用。9....:Even numbers: 2 4 6 9.3 结合算法库范围基 for 循环可以与 C++ 标准库中的算法结合使用,以下示例展示如何使用 std::for_each 和范围基 for 循环:#include

    11610

    我的神经网络不工作了!我应该做什么? 详细解读神经网络的11种常见问题

    当开始训练时,网络将会非常不稳定,因为当预期的值为255时,它将产生-1或1的值,这会被大多数用来训练神经网络的优化算法认为是很严重的错误。它会产生巨大的梯度,并且很可能你的训练错误会爆炸。...在传统编程的情况下,我们习惯了计算机在出错时抛出错误,并将其作为信号返回并检查错误。...不幸的是这一过程与机器学习应用程序是不能工作的,所以我们应该非常小心检查我们在每个阶段的过程,这样我们就会知道,当一个错误已经产生时,我们就需要回去更彻底地检查代码。...我的建议是从一开始去适应可视化,不要只有当你的网络不工作时才开始适应,这样就能确保在你开始尝试不同的神经网络结构时,你已经检查了完整的流程。这是你能准确评估多种不同方法的唯一方式。...这是因为当输入小于0时,输入的一个很小变化不会影响输出。由于正值的梯度很大,这似乎不是一个问题,但是,层与层是可以叠在一起的,负的权重可以将那些梯度很大的正值变为梯度为0的负值。

    1.7K30

    试题 入门训练 A+B问题

    做题时你应该假设所给的输入是一定满足输入格式的要求的,所以你不需要对输入的格式进行检查。多余的格式检查可能会适得其反,使用你的程序错误。...样例输出 57 说明:“样例输出”给出了一组满足“输出格式”要求的输出的例子。 样例输出中的结果是和样例输入中的是对应的,因此,你可以使用样例的输入输出简单的检查你的程序。...要特别指出的是,能够通过样例输入输出的程序并不一定是正确的程序,在测试的时候,会用很多组数据进行测试,而不局限于样例数据。...有可能一个程序通过了样例数据,但测试的时候仍只能得0分,可能因为这个程序只在一些类似样例的特例中正确,而不具有通用性,再测试更多数据时会出现错误。...有一些范围在方便的时候是在“问题描述”中直接给的,所以在做题时不仅要看这个范围,还要注意问题描述。

    49720

    蓝桥杯 入门训练 A+B问题

    说明:“输入格式”是描述在测试你的程序时,所给的输入一定满足的格式。 做题时你应该假设所给的输入是一定满足输入格式的要求的,所以你不需要对输入的格式进行检查。...多余的格式检查可能会适得其反,使用你的程序错误。 在测试的时候,系统会自动将输入数据输入到你的程序中,你不能给任何提示。...样例输出57 说明:“样例输出”给出了一组满足“输出格式”要求的输出的例子。 样例输出中的结果是和样例输入中的是对应的,因此,你可以使用样例的输入输出简单的检查你的程序。...要特别指出的是,能够通过样例输入输出的程序并不一定是正确的程序,在测试的时候,会用很多组数据进行测试,而不局限于样例数据。...有可能一个程序通过了样例数据,但测试的时候仍只能得0分,可能因为这个程序只在一些类似样例的特例中正确,而不具有通用性,再测试更多数据时会出现错误。

    42810

    【深入探索 C++ STL 双端队列 deque】 —— 数据时空的双端虫洞,扭曲常规操作的效率边界

    operattor[ ]不会强制检查,如果访问的元素的下标超出deuqe对象的范围,则会导致未定义的错误,不同的编译器的处理方式不同!...当使用已经失效的deque迭代器访问元素时,这是一种未定义行为。g++ 编译器在这种情况下可能没有立即给出错误提示,而是继续执行代码,可能会出现看似 “正确” 的结果。...5.2、删除操作导致的迭代器失效问题 【C++标准:】 在deque中间删除元素当从deque中间删除一个元素时,所有指向被删除元素及其之后位置的迭代器都会失效。...: 【Linux下g++的检查机制:】 与插入元素相同,迭代器失效的检查不严格,也不采取措施终止程序,而是继续执行代码,可能会出现看似 “正确” 的结果。...【谨慎使用迭代器范围】 当使用迭代器范围进行操作时(如在一个范围内插入或删除元素),要特别注意迭代器失效的情况。

    21710

    C++入门

    +输入&输出 我们用一段简单的代码来了解这个部分: #include//头文件 // std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中 using namespace...<<endl; return 0; } 程序运行结果如下: 关于输入和输出,我在网上copy了一段说明: 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。 C++的输入输出可以自动识别变量类型。...其实相对于C语言的输入和输出,C++的输入和输出更加地方便,它可以自动地识别类型: 这里输出语句的endl我们暂且将他认定为是和“\n”一样的作用 #include using...inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址了,链接就会找不到。

    10410

    c++字符串转int_python中lower的用法

    在做ACM题时,经常都会遇到一些比较大的整数。而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647。...而unsigned范围是[0,2^32),即0~4294967295。也就是说,常规的32位整数只能够处理40亿以下的数。 那遇到比40亿要大的数怎么办呢?这时就要用到C++的64位扩展了。...当进行64位与32位的混合运算时,32位整数会被隐式转换成64位整数。...但是,VC的输入输出与__int64的兼容就不是很好了,如果你写下这样一段代码: __int64 a; 2 cin >> a; 3 cout << a; 那么,在第2行会收到“error C2679...处理规模与除输入输出外的使用方法同上。对于输入输出,它的扩展比VC好。

    61430

    【前缀和】算法思想,附两道道手撕题

    子区间和可以通过以下公式快速计算: 这里需要注意的是,由于 sum[0] 存储的是数组的第一个元素,所以当 i = 0 时,公式变为 sum[j],因为 sum[0] 与 sum[i-1] 相等。...,数组中的数值为0~100的整数, 给定一个数值(minAverageLost)表示某个时间段内平均失败率容忍值,即平均失败率小于等于minAverageLost, 找出数组中最长时间段,如果未找到则直接返回...输出描述 找出平均值小于等于minAverageLost的最长时间段,输出数组下标对,格式{beginIndex}-{endIndx}(下标从0开始), 如果同时存在多个最长时间段,则输出多个下标对且下标对之间使用空格...条件检查:对于每个子区间,我们验证其平均失败率是否不超过允许的阈值。如果满足条件,即记录该子区间。 寻找最长子区间:在记录满足条件的子区间时,我们同时追踪最长的子区间长度。...结果输出:最后,我们检查结果列表。若为空,则表示没有找到任何符合条件的子区间,输出"NULL"。否则,输出所有符合条件的子区间,若有多个,则按起始索引的升序排列。

    11710
    领券