自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 POJ - 1177 Picture

线段的求法: 对于垂直边的计算, 从左向右依次扫描, 左边界加入, 右边界删除;对于每一个位置, 我们计算当前位置的总染色区间, 看看它和上一个位置的总染色区间的变化值, 就是我们要求的 蓝色线段;首先我们知道, 对于扫描线计算矩形, 矩形的左边界是把边加入, 矩形的右边界是把边删除。这个是垂直边的计算, 同理的, 对于水平方向的边, 我们也进行同样的运算;对于边的添加删除, 我们可以利用线段树进行优化, 达到 logn 级别;的线段, 就是我们要求的该部分的垂直方向的周长;那么怎么计算蓝色的线段呢?

2023-05-28 14:03:49 219

原创 POJ - 2528 Mayor‘s posters

线段树的解法, 很像是给这面墙染色, 大体是思路是, 先对区间进行离散化, 再从后往前染色, 染色之前, 先看一下当前这段区间 [x, y] 是否已经被完全染色了;的顺序, 当前这个区间 [x, y] 就算被染色, 也会再后面被完全覆盖掉, 也就说明我们最后是不能看到 这张 [x, y] 的海报的;到这里, 最主要的思路就已经解决了, 接下来就是细节的问题了;相反的 [x, y] 如果没有被完全染色, 那就说明。的染色, 会再 [x, y] 区间内留下一些。, 让我们可以看见这种 [x, y] 的海报的;

2023-05-25 20:34:59 214

原创 LC 3. 无重复字符的最长子串

【代码】LC 3. 无重复字符的最长子串。

2023-05-01 13:38:58 218

原创 LC 27. 移除元素

class Solution { /** 思路: 划分垃圾区域 例如: nums[] = {0,1,2,2,3,0,4,2} val = 2 1. 0 1 2 2 3 0 4 2 i r 2. 0 1 2 2 3 0 4 2 i r 3. 0 1 2 2 3 0 4 2 i r ...

2022-02-19 09:45:37 396

原创 LC 24. 两两交换链表中的节点

class Solution { /** 思路: 迭代法 pre 指针 指向 cur 指针的前一个节点 nex 指针 指向 cur 指针的下一个节点 tmp 指针 指向 nex 指针的下一个节点 例如: 链表 3 -> 2 -> 5 -> 4 -> 6 -> 7 -> 8 -> 9 此时 有可能出现的指针指向情况为 ...

2022-02-19 09:43:08 282

原创 LC 1022. 从根到叶的二进制数之和

class Solution { public int sumRootToLeaf(TreeNode root) { // path 用来存储路径上走过的和 /** 1 / \ path == 1 0 1 path == 2 / \ path == 3 1 1 */ int pat...

2022-02-16 00:01:02 239

原创 LC 977. 有序数组的平方

class Solution { /** 思路: 前后指针, L 指针从左往右遍历, R 指针从右往左遍历, 因为数组是非递减的 所以如果左边有负数的话, 那么这些负数的平方的从左到右顺序是递增的, 那么此时 整个数组的每个元素的平方构成的序列就是这样的, 比如说: -4 -1 0 3 10 16 1 0 9 100 左右两边各自有序, 我们通过归并的思想, 变为整体有序 */ ...

2022-02-15 23:59:20 207

原创 LC 643. 子数组最大平均数 I

class Solution { /** 思路: 滑动窗口 窗口大小为 k 的最大和 找到后除以 k 就是答案 */ public double findMaxAverage(int[] nums, int k) { int sum = 0; for (int i = 0; i < k; i++) { sum += nums[i]; } ...

2022-02-15 23:57:10 158

原创 LC 19. 删除链表的倒数第 N 个结点

class Solution { /** 思路: 快慢指针 快指针先走 n + 1 步, 慢指针再出发, 快指针走到头时, 慢指针刚好到达 倒数第 n 个节点的前一个节点, 删除返回 */ public ListNode removeNthFromEnd(ListNode head, int n) { if (head == null || n == 0) return head; ...

2022-02-13 10:26:04 197

原创 LC 236. 二叉树的最近公共祖先

class Solution { /** 思路: 后序遍历 如果在一颗子树上找到 p 或 q , 直接返回当前的值, 如果一个节点, 他的左右子树分别存在 p 和 q, 那么该节点一定是 p 和 q 的最近公共祖先 对于特殊情况: p 和 q 的最低公共祖先是他自己时, 该过程同样是成立的 */ public TreeNode lowestCommonAncestor(TreeNode root, ...

2022-02-11 01:22:20 652

原创 LC 42. 接雨水

class Solution { /** 思路: 只考虑当前位置能装下多少水 比如说 8 2 7 i ... cur ... j 对于当前位置 cur 而言, 左边存在 0...cur - 1 这段区间最大值 右边存在 cur + 1 ... n - 1 这段区间最大值 我们只拿当前位置 ...

2022-02-11 01:19:01 656

原创 LC 300. 最长递增子序列

class Solution { /** 暴力法 + dp 思路: dp[i] 表示, 必须以第 i 个位置结束的最长递增子序列的长度 每到一个位置, 都要回头扫描一遍已经遍历过数组, 如果存在 比当前位置的数值小的数组, 从他的 dp 中获取它的长度 + 1 可以得到 dp[i] 位置当前的一个可能取值, 去 0...i - 1 这段区间中所有可能取值的最...

2022-01-31 02:47:06 1219

原创 LC 8. 字符串转换整数 (atoi)

class Solution { public int myAtoi(String s) { // 合法性判断 int N = s.length(); if (N == 0) return 0; char[] str = s.toCharArray(); int i = 0; // 前导空格, 都跳过 while (i < N &&amp...

2022-01-31 02:44:57 603

原创 LC 3. 无重复字符的最长子串

class Solution { public int lengthOfLongestSubstring(String s) { /* * 思路: * 单调栈 * 构建一个用一个队列存放已经遍历过的元素, 如果当前元素在队列中已经存在, 那么不停出队到队列里 * 和当前元素相同的元素的下一个位置, 把当前元素放进去, 每次元素入队, 都更新一次最大值, 这样遍历 * ...

2022-01-31 02:42:17 258

原创 PAT乙级 1005 继续(3n+1)猜想 解题思路 代码注释

输入样例 6 3 5 6 7 8 11 输出样例 7 6 时间:2021年6月29日 思路:此题巨坑,如果按照正常思路做很难理解,而且特别容易超时和段错误 毫无进展的情况下,我看了一圈题解发现,网上的做法大同小异,而且都 不太好理解,所以又试着找了一下规律,发现还真有简单的办法 具体思路是这样的: 我把所给数据的每一位都算出来,如下图 然后我就惊奇的发发现: 有没有瞬间明白了!!原来是个水题啊 不过当然没有这么简单 当我按照这个思路写出来,兴...

2021-06-29 01:54:06 131

原创 PAT乙级 1065 单身狗 解题思路 代码注释

输入样例: 3 11111 22222 33333 44444 55555 66666 7 55555 44444 10000 88888 22222 11111 23333 输出样例: 5 10000 23333 44444 55555 88888 /* 时间:2021年6月20日 思路: 先看一下大概题意:大概意思就是给出已经 配好对的情侣 然后这些情侣中的某些人和一些其他的人一起出席派对,在这些人中,找出 单身的人 和 没有和自己伴侣一起出席的人 我们再看需要我们求的是什么:...

2021-06-20 01:39:50 207

原创 PAT乙级1059 C语言竞赛

# include <iostream> # include <algorithm> # include <cstdio> # include <cstring> using namespace std; int a[10001] = { 0 }; typedef struct Data { int number; // ID char tes[20]; // 奖品 int t; // 标记是否已经查询过 }Data; bool prime...

2021-06-19 16:20:43 97

原创 PAT乙级 1093 字符串A+B AC题解

/* 时间:2021年6月14日 程序:PAT 乙级 1093 字符串A+B 思路:根据题目的给出的要求,我们需要按顺序输出两个字符串中不一样的字符 由此我们可以历遍字符串,把不相同的找出来,放进容器里,再一起输出 所以现在的问题就是这么把不相同的字符串找出来 由于涉及到对字符串中字符的寻找,所以能想到 find() 函数的用法 所以基本思路就是:先把两个字符串放在一个里边,再依次对第 n 个字符的前 n - 1 个字符寻找,如果前面没有相...

2021-06-14 15:56:01 202

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除