岛屿的最大面积题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,计算岛屿的最大面积。岛屿面积的计算方式为组成岛屿的陆地的总数。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 输入描述 第一行包含两个整数 N, M,表示矩阵的行数和列数。后续 N 行,每行包含 M 个数字,数字为 1 或者 0,表
题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 输入描述: 第一行包含两个整数 N, M,表示矩阵的行数和列数。 后续 N 行,每行包含 M 个数字,数字为 1 或者 0。 输出描述: 输出一个整数,表示岛屿的数量。如果不存在岛屿,则输出 0。 输入示例:4 5 1 1 0
两者大概的区别: dfs是可一个方向去搜,不到黄河不回头,直到遇到绝境了,搜不下去了,再换方向(换方向的过程就涉及到了回溯)。 bfs是先把本节点所连接的所有节点遍历一遍,走到下一个节点的时候,再把连接节点的所有节点遍历一遍,搜索方向更像是广度,四面八方的搜索过程。就地递归函数的下面,例如如下代码: void dfs(参数) { 处理节点 dfs(图,选择的节点); // 递归
主要过程就是一圈一圈容器需要能保存所遍历过的元素:队列 , 栈 ,数组队列:操作受限制的线性表,先进先出,一般应用的问题:速度不匹配,多用户竞争资源。顺序存储:头指针 front 指向对头元素,尾指针 rear 指向队尾元素的下一个位置。队列顺序存储的顺序存储类型的描述:#define MaxSize 50 //定义队列中元素的最大个数 typedef struct{ ElemType d
vector是向量类型,可以容纳许多类型的数据,所以称之为容器,是C++里面STL(标准模板库)的重要成员,vector<int>nums;//创建一个空的vectorvector(int n);//创建一个元素数为n的vectorvector<int>nums(10,0);//10个元素,初始化为0vector<int>v4(v3);//复制构造函数vecto
迭代:定义:通过循环(如 for 或 while 循环)重复执行一段代码,直到满足某个条件。 特点:使用一个或多个变量来跟踪状态并更新它们,直到满足终止条件。 示例:计算数组中所有元素的总和。def sum_iterative(arr): total = 0 for num in arr: total += num return total递归: 定义:函数
如果你现在的显示效果是有滚动条的,就说明你的选项目前是Toggle Scrolling。 “Cell —> All Outputs —> Toggle”:会把所有cell的输出都设这为Toggle。 “Cell —> Current Outputs —> Toggle”:仅把当前cell的输出都设这为Toggle。
梯度下降法通过计算损失函数的梯度,并将这个梯度反馈给 最优化函数 来更新权重以最小化损失函数。反向传播算法(Backpropagation,简称BP算法)是“误差反向传播”的简称机器学习笔记丨神经网络的反向传播原理及过程(图文并茂+浅显易懂)_神经网络反向传播原理-CSDN博客待补充
在神经网络中,偏置(bias)通常与每个神经元(或称为节点)相关联,并且位于神经元的加权和(即输入信号与权重的乘积之和)之后,但在激活函数之前。偏置项为神经元的激活提供了一个可学习的偏移量,使得即使在没有输入信号的情况下(即所有输入都为0时),神经元仍然可以有一个非零的输出(取决于偏置的值和激活函数的性质)。具体来说,偏置项在神经网络中的位置可以描述如下:神经元内部:每个神经元都会有一个或多个偏置
除了标准正态分布(即使用np.random.randn或类似函数)来初始化神经网络的权重外,还有其他多种初始化权重的方式。这些方式的选择通常取决于网络的具体架构、激活函数以及希望避免的问题(如梯度消失或梯度爆炸)。以下是一些常见的权重初始化方法:全零初始化(Zero Initialization):将权重初始化为零。然而,这种方法通常不被推荐,因为它会导致所有神经元在训练过程中都计算相同的输出,从
数据库共有2种类型:关系型数据库、非关系型数据库1、关系数据库MySQL、MariaDB(MySQL的代替品)、 Percona Server(MySQL的代替品·)、PostgreSQL、 Microsoft Access、Google Fusion Tables、SQLite、DB2、FileMaker、Oracle、SQL Server、INFORMIX、Sybase、dBASE、Clipp
55:右旋字符串 卡码网(第八期模拟笔试) 字符串的右旋转操作是把字符串 尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k, 请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。 例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。 输入:输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。
卡码网 54. 替换数字(第八期模拟笔试) 给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。 对于输入字符串 "a5b",函数应该将其转换为 "anumberb" 输入:一个字符串 s,s 仅包含小写字母和数字
第18题. 四数之和 题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意: 答案中不可以包含重复的四元组。 示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target
344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:["h","e","l","l","o"] 输出:["o","l","l","e","h"] 对于字符
第454题.四数相加II 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果不会超过 2^31 - 1 。 例如:
202 : 快乐数编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的 平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果 可以变为 1,那么这个数就是快乐数。 示例:输入:19 输出:true 解释: 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2
哈希表(Hash table)哈希表是根据关键码的值而直接进行访问的数据结构。哈希函数小李和小王都映射到了索引下标 1 的位置,这一现象叫做哈希碰撞std::unordered_map 底层实现为哈希表,std::map 和std::multimap 的底层实现是红黑树。同理,std::map 和std::multimap 的key也是有序的(这个问题也经常作为面试题,考察对语言容器底层的理解)。
/*面试题 02.07. 链表相交给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:其实就是观察两个链表,如果相交,那么两个链表会同时遍历到相同的节点。所以就是相同部分前去一个,是不同的,相同部分两个链表都相同*/#include <iostream> #i
/*leetcode 24. 两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.*/#include <iostream> #include <vector>
707.设计链表时间复杂度: 涉及 index 的相关操作为 O(index), 其余为 O(1) 空间复杂度: O(n) #其他语言版#include <iostream> using namespace std; int main() { int index = 2; while(--index){ // index-- 输出 1 0 --index输出
977:有序数组的平方给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]双指针法 数组其实是有序的, 只不过负数平方之后可能成为最大数了
Leetcode209:长度最小的子数组在一个正整数数组nums 中找到最小长度的连续子数组,使子数组元素之和大于或等于s。两个for循环的暴力搜索会0(N*2),可能会超时。考虑类似双指针的滑动窗口,for循环的索引是滑动窗口终止的位置,满足和大于等于S的条件下,窗口的起始位置后移。#include <iostream> #include <vector> using
数组下标从0开始,如果使用C++的话,要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。数组的元素只能覆盖,不能删除。C++中vector 是标准库中的提供的一个容器类,用于存储动态大小的元素序列。它是一个模板类,用于动态存储任意类型的元素。注意包含头文件<vector>在C++中,std 是命名空间(namespace
Rapidly-exploring Random Tree核心思想:RRT 算法首先将起点初始化为随机树的根节点,然后在机器人的可达空间中随机生成采样点,从树的根节点逐步向采样点扩展节点,节点和节点之间的连线构成了整个随机树,当某个节点与目标点的距离小于设定的阈值时,即可认为找到可行路径。快速扩展随机树(Rapidly-exploring Random Trees,RRT)算法,是近十几年得到广泛
1.插入排序1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找到已排序元素中小于等于tem的元素 5.tem插入到该元素的后面,如果已排序所有元素都大于tem,则将tem插入到下标为0的位置 6.重复步骤2~5 void InsertSort(int* arr, int n)
在计算机领域,"src" 通常是指源代码(source code)文件的缩写。源代码是以文本形式编写的程序代码,它包含了一个软件项目的实现细节和逻辑。"config" 是 "configuration" 的缩写,指的是配置文件。配置文件包含了应用程序或系统的各种设置和参数,用于控制软件或系统的行为。 配置文件通常是以文本形式存储,使用特定的格式或语法来描述配置项和其对应的值。不同的软件或系统可能使
1:程序的运行过程编译器编译为可执行文件g++ -o main main.cpp //main 是可执行文件 main.cpp是需要编译的代码文件运行过程./main //Windows 上需要使用 main.exe 进行运行集成开发环境(Integrated Development Environment),简称 IDE。需要消耗的时间1 代码编写:注意考虑算法设计,数据结构的选择,各种边界情
pip install --upgrade setuptools
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号