随笔分类 -  算法

摘要:解决的问题 寻找有序序列中第一个满足条件的元素的位置 ##注意点 当二分上界超过int型数据范围的一半,那么当欲查询元素在序列较靠后的位置时。mid=(left+right)/2可能溢出,此时一般使用mid=left+(right-left)/2避免溢出。 题目 如何在一个严格递增序列A中找出给定的 阅读全文
posted @ 2021-08-09 15:10 小帆敲代码 阅读(55) 评论(0) 推荐(0)
摘要:##DFS 深度优先搜索 //深度优先搜索 #define MVNum 100//最大顶点数 bool visited[MVNum];//访问标志数组,其初值为false void DFS(Grapg G,int v) {//从第v个顶点出发递归的深度优先遍历图G cout<<v;visited[v 阅读全文
posted @ 2021-08-09 09:33 小帆敲代码 阅读(19) 评论(0) 推荐(0)
摘要:#include<iostream> using namespace std; // 图的邻接矩阵存储表示 #define MaxInt 32767 //表示极大值 即无穷 #define MVNum 100 //最大顶点数 typedef char VerTexType; //假设顶点的数据类型为 阅读全文
posted @ 2021-08-09 08:50 小帆敲代码 阅读(99) 评论(0) 推荐(0)
摘要:// 图的邻接表存储表示 #include<iostream> using namespace std; #define MVNum 100 //最大顶点数 typedef struct ArcNode //边结点 { int adjvex; //该边指向的顶点的位置 struct ArcNode* 阅读全文
posted @ 2021-08-08 21:10 小帆敲代码 阅读(21) 评论(0) 推荐(0)
摘要:##问题描述 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。 一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的 阅读全文
posted @ 2021-03-10 15:41 小帆敲代码 阅读(73) 评论(0) 推荐(0)
摘要:##问题描述 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。 例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 阅读全文
posted @ 2021-03-09 14:55 小帆敲代码 阅读(72) 评论(0) 推荐(0)
摘要:##问题描述 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返 阅读全文
posted @ 2021-03-08 10:25 小帆敲代码 阅读(76) 评论(0) 推荐(0)
摘要:##问题描述 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 进阶: 如果有大量输入的 S,称作 S1, S2, ... 阅读全文
posted @ 2021-03-08 01:45 小帆敲代码 阅读(56) 评论(0) 推荐(0)
摘要:##问题描述 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 示例: 输入:S = "ababcbacadefegdehijhklij" 输出:[9,7,8] 解释: 划分结果为 "ababcbaca", " 阅读全文
posted @ 2021-03-04 00:49 小帆敲代码 阅读(73) 评论(0) 推荐(0)
摘要:##问题描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [7,1,5,3,6,4] 输出: 7 阅读全文
posted @ 2021-03-03 23:15 小帆敲代码 阅读(51) 评论(0) 推荐(0)
摘要:##问题描述 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 ##示例 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: 阅读全文
posted @ 2021-03-02 14:10 小帆敲代码 阅读(49) 评论(0) 推荐(0)
摘要:##问题描述 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 ##示例 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7] ``` 提示: 节点总数 <= 1000 ## /** Defin 阅读全文
posted @ 2021-03-02 13:46 小帆敲代码 阅读(44) 评论(0) 推荐(0)
摘要:##问题描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 ##示例 示例 1: 输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4. 示例 2: 输入: n = 13 输出: 2 解释 阅读全文
posted @ 2021-03-01 16:34 小帆敲代码 阅读(68) 评论(0) 推荐(0)
摘要:##问题描述 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1] 给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习? 阅读全文
posted @ 2021-01-29 14:48 小帆敲代码 阅读(63) 评论(0) 推荐(0)
摘要:##问题描述 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。 返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。 ##示例 阅读全文
posted @ 2021-01-22 00:25 小帆敲代码 阅读(72) 评论(0) 推荐(0)
摘要:##问题描述 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 ##示例 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 < / \ 2 3 < \ \ 5 4 < ##代码 /** * Definition fo 阅读全文
posted @ 2021-01-21 23:55 小帆敲代码 阅读(67) 评论(0) 推荐(0)
摘要:##问题描述 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 ##示例 输入: grid = [ ["1","1","1","1"," 阅读全文
posted @ 2021-01-20 23:27 小帆敲代码 阅读(61) 评论(0) 推荐(0)
摘要:##问题描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。 ##示例 X X X X X O O X X X O X X O X X 运行你的函数后,矩阵变为: X X X X X X X X X X X 阅读全文
posted @ 2021-01-20 23:05 小帆敲代码 阅读(62) 评论(0) 推荐(0)
摘要:##问题描述 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找 阅读全文
posted @ 2021-01-20 06:52 小帆敲代码 阅读(71) 评论(0) 推荐(0)
摘要:##问题描述 给定一个二叉树,原地将它展开为一个单链表。 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 ##代码 /** * Definition for a binary tree node. * public class 阅读全文
posted @ 2021-01-19 16:46 小帆敲代码 阅读(70) 评论(0) 推荐(0)