算法
子琦啊
若还有雄心壮志,那成败都是小事
展开
-
【算法集训】基础算法:二分查找 | 概念篇
二分枚举,也叫二分查找,指的就是给定一个区间,每次选择区间的中点,并且判断区间中点是否满足某个条件,从而选择左区间继续求解还是右区间继续求解,直到区间长度不能再切分为止。由于每次都是把区间折半,又叫折半查找,时间复杂度为 O(logn),和线性枚举的求解结果一直,但是高效许多,返回值可以是下标,也可以是元素本身。【例题3】只有两种颜色的数组 arr ,左边部分为红色用 0 表示,右边部分为绿色用 1 表示,要求找到下标最小的绿色元素的下标。原创 2024-04-06 18:55:14 · 424 阅读 · 0 评论 -
【算法集训】基础算法:前缀和 | 习题篇
这道题如何将每个奇数组找出来想了一段时间,思路能想出来就是代码费了点时间。这一题是简单题,和前面套路一样,算出前缀和之后进行判断就可以了。通过定义左右的和,并依次做变换如果相等则得到结果。要找的是最左边的,所以先把右边加满。左边+1,右边-1,如果相等则返回。原创 2024-04-05 22:28:11 · 326 阅读 · 0 评论 -
【算法集训】基础算法:前缀和 | 概念篇
前缀和就是对于顺序表(数组、列表)来说,计算前面某一段元素的和。原创 2024-04-01 22:28:37 · 490 阅读 · 0 评论 -
【算法集训】基础算法:滑动窗口
定义一个快慢指针,用于截取数组中某一段信息。同时可以改变快慢指针的值来获取结果,这个过程比较像滑动。和上一题一样的,只不过将替换0的值增加为了。原创 2024-03-31 21:53:41 · 334 阅读 · 0 评论 -
【算法集训】基础算法:双指针
【代码】【算法集训】基础算法:双指针。原创 2024-03-31 20:51:02 · 215 阅读 · 0 评论 -
【算法集训】基础算法:贪心
【代码】【算法集训】基础算法:贪心。原创 2024-03-20 22:26:19 · 306 阅读 · 0 评论 -
【算法集训】基础算法:递推 | 习题篇
经过上一节的概念篇学习,你一定对递推有一个大概得了解,今天就做做下面的一些练习题吧,总体上不难,都是最基础的题目。原创 2024-03-20 22:24:14 · 309 阅读 · 0 评论 -
【算法集训】基础算法:递推 | 概念篇
递推最通俗的理解就是数列,递推和数列的关系就好比 算法 和 数据结构 的关系,数列有点像数据结构中的顺序表,而递推就是一个循环或者迭代的枚举过程。递推本质上是数学问题,所以有同学问算法是不是需要数学非常好,也并不是,你会发现,这些数学只不过是初中高中我们学烂的东西,高考都经历了,这些东西又何足为惧!?原创 2024-03-08 21:10:39 · 995 阅读 · 0 评论 -
【算法集训】基础算法:模拟
顾名思义,就是题目要求做什么,代码中就跟着做就可以。原创 2024-03-07 22:39:53 · 521 阅读 · 0 评论 -
【算法集训】基础算法:枚举
枚举的概念就是把满足题目条件的所有情况都列举出来,然后一一判定,找到最优解的过程。,也是一个不错的方法、原创 2024-03-03 22:28:56 · 1112 阅读 · 0 评论 -
【算法集训】基础算法:基础排序 - 计数排序
*工作原理:**使用一个额外的数组ct,其中第i个元素是待排序数组A中值等于i的元素的个数,然后根据数组ct来将A中的元素排到正确的位置。非基于比较:之前学的排序都是通过比较数据的大小来实现有序的,比如希尔排序等,而计数排序不用比较数据的大小。这些题都可以用其他排序方法试一遍,用来巩固也是比较好的,明天就要开始其他的算法系列了。计数排序(Counting sort))是一个非基于比较的稳定的线性时间的排序算法,计数排序的名字会让我们想到“计数法”,实际上计数排序的实现就是使用的计数法。原创 2024-03-02 23:13:50 · 495 阅读 · 0 评论 -
【算法集训】基础算法:基础排序 - 插入排序
插入排序(nsertion Sort),一般也被称为直接插入排序,是一种简单直观的排序算法。**工作原理:**将待排列元素划分为「已排序」和「未排序」两部分,每次从「未排序的」元素中选。择一个插入到「已排序的」元素中的正确位置。原创 2024-03-01 21:53:48 · 404 阅读 · 0 评论 -
【算法集训】基础算法:基础排序 - 冒泡排序
它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就像水中的气泡会冒起来一样。,是一种简单的排序算法。原创 2024-03-01 21:01:32 · 415 阅读 · 0 评论 -
【算法集训】基础算法:基础排序 - 选择排序
选择排序就是每一轮都选择最小 | 最大的值放到最前面,等到遍历完毕即可完成排序大致算法步骤: 两层循环: 第一层定义每轮最初的假定最小 | 最大值; 第二层则是进行比较找出最小值 每一次内循环完毕后需要将当前找到的最小值移动到前面。 如此往复,可排序成功原创 2024-02-28 23:15:12 · 510 阅读 · 0 评论 -
编程零基础算法 | 四、循环和选择结构——面试题 16.07. 最大数值
编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。原创 2023-11-22 20:06:53 · 36 阅读 · 0 评论 -
编程零基础算法 | 四、循环和选择结构——LCR 189. 设计机械累加器
请设计一个机械累加器,计算从 1、2… 一直累加到目标数值 target 的总和。注意这是一个只能进行加法操作的程序,不具备乘除、if-else、switch-case、for 循环、while 循环,及条件判断语句等高级功能。原创 2023-11-22 20:06:15 · 75 阅读 · 0 评论 -
编程零基础算法 | 四、循环和选择结构——2413. 最小偶倍数
给你一个正整数 n ,返回 2 和 n 的最小公倍数(正整数)。原创 2023-11-22 20:05:35 · 30 阅读 · 0 评论 -
编程零基础算法 | 四、循环和选择结构——1572. 矩阵对角线元素的和
给你两个整数,n 和 start。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length。请返回 nums 中所有元素按位异或(XOR)后得到的结果。原创 2023-11-22 20:05:01 · 106 阅读 · 0 评论 -
编程零基础算法 | 四、循环和选择结构——1486. 数组异或操作
给你两个整数,n 和 start。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length。请返回 nums 中所有元素按位异或(XOR)后得到的结果。原创 2023-11-22 20:04:20 · 35 阅读 · 0 评论 -
编程零基础算法 | 三、数据类型——面试题 17.01. 不用加号的加法
设计一个函数把两个数字相加。不得使用或者其他算术运算符。原创 2023-11-22 20:03:04 · 32 阅读 · 0 评论 -
编程零基础算法 | 二、运算符——2651. 计算列车到站时间
给你一个正整数 arrivalTime 表示列车正点到站的时间(单位:小时),另给你一个正整数 delayedTime 表示列车延误的小时数。返回列车实际到站的时间。注意,该问题中的时间采用 24 小时制。原创 2023-11-22 20:01:32 · 31 阅读 · 0 评论 -
编程零基础算法 | 二、运算符——461. 汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。原创 2023-11-22 20:00:55 · 29 阅读 · 0 评论 -
编程零基础算法 | 二、运算符——191. 位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 3 中,输入表示有符号整数 -3。## 三、源码讲解int c = 0;while(n) {原创 2023-11-22 19:59:41 · 44 阅读 · 0 评论 -
编程零基础 | 一、语言基础——1812.判断国际象棋棋盘中一个格子的颜色
给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false。给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。原创 2023-11-22 19:58:06 · 58 阅读 · 0 评论 -
编程零基础算法题 | 一、语言基础——2235.两整数相加
给你两个整数 num1 和 num2,返回这两个整数的和。原创 2023-11-22 19:55:51 · 26 阅读 · 0 评论 -
位运算规则【算法通关村十一关(1)】
计算机中的数字全部用表示,也就是二进制运算。机器数由8位组成,第一位符号位机器数对应的就是原本的数。例如00000001 = +1其中机器数分为原码、反码、补码:机器数原本的值,第一位符号位,其余位值。:正数反码为它本身;负数的反码在原码基础上符号位不变,其余位取反补码:正数补码为它本身;负数的补码在原码基础上符号位不变,其余位取反+1。原创 2023-08-30 23:06:39 · 367 阅读 · 0 评论 -
力扣25.K个一组反转【黄金挑战|第二关】
给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。原创 2023-08-29 23:29:34 · 412 阅读 · 1 评论 -
链表区间反转问题解析【算法通关村第二关白银挑战】
给你单链表的头指针head和两个整数Ieft和right,其中Ieft原创 2023-08-03 18:22:10 · 769 阅读 · 0 评论 -
终于学会链表反转了【算法通关村第二关】
今天是链表反转的2个常用方法。反转要求如下:对应力扣206题。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。原创 2023-07-31 22:22:15 · 862 阅读 · 1 评论 -
算法通关村第一关——小白也能学会的链表C_C++【编程导航】
这是编程导航的算法训练营的第一期,本关主要探讨。链表是一种常见的数据结构,链表中的数据不需要扎堆存储,每个节点之间使用链接的方式来寻找。原创 2023-07-25 21:26:00 · 1263 阅读 · 0 评论