gnu.foundation Open in urlscan Pro
172.67.208.143  Public Scan

URL: https://gnu.foundation/
Submission: On November 01 via api from BE — Scanned from DE

Form analysis 1 forms found in the DOM

POST https://feedburner.google.com/fb/a/mailverify

<form action="https://feedburner.google.com/fb/a/mailverify" method="post" target="popupwindow" onsubmit="window.open('https://feedburner.google.com/fb/a/mailverify?uri=','popupwindow','scrollbars=yes,width=550,height=520');return true"
  data-pjax-state=""><input type="hidden" value="" name="uri"><input type="hidden" name="loc" value="en_US">
  <div class="field has-addons">
    <div class="control has-icons-left is-expanded"><input class="input" name="email" type="email" placeholder="Email"><span class="icon is-small is-left"><i class="fas fa-envelope"></i></span></div>
    <div class="control"><input class="button" type="submit" value="订阅"></div>
  </div>
</form>

Text Content

HomeArchivesCategoriesTagsAbout

2 年前发表5 天前更新4 分钟读完 (大约615个字)

迁移博客到Azure Static Web App

迫于从某厂离职,每个月白嫖的300CNY良心云额度不复存在,考虑到之前的博客维护都比较的古老,趁机也做一波升级。

在这次维护之前,博客的本体存放在我的NAS上,并通过FRP暴露出去外接一个良心云cdn用来分发,也顺便做了备案,这一套之前跑起来没啥问题,就是每次
generate 之后还需要手动 copy 产物到某个特定的文件夹,非常的不现代化。 由于整体的环境都在本地,所以其实可维护性很低。

更新的思路大概如下:

 * 对博客项目进行梳理,清理掉不规范的配置
 * 博客的本体部分由 github actions 生成并推送到 Azure Static Web App
 * 对境内而言,还是走CDN分发,分发回源地址由之前的 FRP 暴露的地址改为 Azure Static Web App 生成的地址
 * 境外部分,dnspod支持分线路解析,直接通过 Custom domain 功能分发即可

GitHub actions 写起来也是挺简单的,改了改模板就能直接用。




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52


name: Azure Static Web Apps CI/CD

on:
  push:
    branches:
      - main

jobs:
  build_and_deploy_job:
    runs-on: ubuntu-latest
    name: Build and Deploy Job
    steps:
      - name: Setup NodeJS
        uses: actions/setup-node@v3
        with:
          node-version: 19
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Install pandoc
        run: sudo apt-get update -y && sudo apt-get install pandoc -y
      - name: Install hexo-cli
        run: npm install hexo-cli -g
      - name: Npm install
        run: npm install
      - name: Hexo generate
        run: hexo g
      - name: Deploy
        id: builddeploy
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_GREEN_STONE_0480A0D00 }}
          repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
          action: "upload"
          ###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
          # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
          app_location: "/public" # App source code path
          api_location: "" # Api source code path - optional
          output_location: "" # Built app content directory - optional
          ###### End of Repository/Build Configurations ######

#  close_pull_request_job:
#    if: github.event_name == 'pull_request' && github.event.action == 'closed'
#    runs-on: ubuntu-latest
#    name: Close Pull Request Job
#    steps:
#      - name: Close Pull Request
#        id: closepullrequest
#        uses: Azure/static-web-apps-deploy@v1
#        with:
#          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_GREEN_STONE_0480A0D00 }}
#          action: "close"




这次迁移遗留几个问题待解决:

 * 图库目前是在良心云 COS 上,需要迁走
 * 境外的图片访问仍需要路由回国内
 * 考虑到科学上网已经是基本技能,境内的加速是否存在必要?

3 年前发表5 天前更新算法题解 / leetcode5 分钟读完 (大约742个字)

leetcode-475-供暖器


供暖器


题面

> leetcode题目

冬季已经来临。你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。

在加热器的加热半径范围内的每个房屋都可以获得供暖。

现在,给出位于一条水平线上的房屋houses和供暖器heaters的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。

说明:所有供暖器都遵循你的半径标准,加热的半径也一样。


EXAMPLE

输入: houses = [1,2,3], heaters = [2]
输出: 1
解释: 仅在位置2上有一个供暖器。如果我们将加热半径设为1,那么所有房屋就都能得到供暖。

阅读更多
3 年前发表5 天前更新算法题解 / leetcode6 分钟读完 (大约892个字)

leetcode-519-随机翻转矩阵


随机翻转矩阵


题面

> leetcode题目

给你一个 m×n 的二元矩阵 matrix ,且所有值被初始化为 0 。请你设计一个算法,随机选取一个满足 matrix[i][j]==0 的下标 (i,j)
,并将它的值变为 1 。所有满足 matrix[i][j]==0 的下标 (i,j) 被选取的概率应当均等。

尽量最少调用内置的随机函数,并且优化时间和空间复杂度。

实现 Solution 类:

 * Solution(int m, int n) 使用二元矩阵的大小 m 和 n 初始化该对象
   
 * int[] flip() 返回一个满足 matrix[i][j] == 0 的随机下标 [i, j] ,并将其对应格子中的值变为 1
   
 * void reset() 将矩阵中所有的值重置为 0


EXAMPLE

输入
["Solution", "flip", "flip", "flip", "reset", "flip"]
[[3, 1], [], [], [], [], []]
输出
[null, [1, 0], [2, 0], [0, 0], null, [2, 0]]

解释
Solution solution = new Solution(3, 1);
solution.flip(); // 返回 [1, 0],此时返回 [0,0]、[1,0] 和 [2,0] 的概率应当相同
solution.flip(); // 返回 [2, 0],因为 [1,0] 已经返回过了,此时返回 [2,0] 和 [0,0] 的概率应当相同
solution.flip(); // 返回 [0, 0],根据前面已经返回过的下标,此时只能返回 [0,0]
solution.reset(); // 所有值都重置为 0 ,并可以再次选择下标返回
solution.flip(); // 返回 [2, 0],此时返回 [0,0]、[1,0] 和 [2,0] 的概率应当相同


数据范围

 * 1≤m,n≤104
 * 每次调用flip 时,矩阵中至少存在一个值为 0 的格子。
 * 最多调用 1000 次 flip 和 reset 方法。

阅读更多
3 年前发表5 天前更新算法题解 / leetcode3 分钟读完 (大约474个字)

leetcode-677-键值映射


键值映射


题面

> leetcode题目

实现一个 MapSum 类,支持两个方法,insert 和 sum:

MapSum() 初始化 MapSum 对象
void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 key
已经存在,那么原来的键值对将被替代成新的键值对。
int sum(string prefix) 返回所有以该前缀 prefix 开头的键 key 的值的总和。


EXAMPLE

输入:




1
2


["MapSum", "insert", "sum", "insert", "sum"]  
[[], ["apple", 3], ["ap"], ["app", 2], ["ap"]]  


输出:




1


[null, null, 3, null, 5]


解释:




1
2
3
4
5


MapSum mapSum = new MapSum();  
mapSum.insert("apple", 3);    
mapSum.sum("ap");           // return 3 (apple = 3)  
mapSum.insert("app", 2);    
mapSum.sum("ap");           // return 5 (apple + app = 3 + 2 = 5)


阅读更多
3 年前发表5 天前更新算法题解 / leetcode3 分钟读完 (大约508个字)

leetcode-44-通配符匹配


通配符匹配


题面

> leetcode题目

给定一个字符串 s 和一个字符模式 p ,实现一个支持 '?$ 和 ′∗′ 的通配符匹配。

> ′?′ 可以匹配任何单个字符。
> ′∗′ 可以匹配任意字符串(包括空字符串)。
> 两个字符串完全匹配才算匹配成功。

说明:
* s 可能为空,且只包含从 a−z 的小写字母。
* p 可能为空,且只包含从 a−z 的小写字母,以及字符 ? 和 ∗。


EXAMPLE-1

输入:
s = "aa"
p = "a"
输出: false
解释: "a" 无法匹配 "aa" 整个字符串。


EXAMPLE-2

输入:
s = "aa"
p = "*"
输出: true
解释: '*' 可以匹配任意字符串。


阅读更多
3 年前发表5 天前更新算法题解 / leetcode5 分钟读完 (大约815个字)

leetcode-629-K个逆序对数组


K个逆序对数组


题面

> leetcode题目

给出两个整数 n 和 k,找出所有包含从 1 到 n 的数字,且恰好拥有 k 个逆序对的不同的数组的个数。

逆序对的定义如下:对于数组的第i个和第j个元素,如果满i<j且 a[i]>a[j],则其为一个逆序对;否则不是。

由于答案可能很大,只需要返回 答案 mod 109+7 的值。


EXAMPLE-1

输入: n=3, k=0
输出: 1
解释:
只有数组 [1,2,3] 包含了从1到3的整数并且正好拥有 0 个逆序对。


EXAMPLE-2

输入: n=3, k=1
输出: 2
解释:
数组 [1,3,2] 和 [2,1,3] 都有 1 个逆序对。

阅读更多
3 年前发表5 天前更新算法题解 / leetcode9 分钟读完 (大约1275个字)

leetcode-10-正则表达式匹配


正则表达式匹配


题面

> leetcode题目

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。

 * '.' 匹配任意单个字符
 * '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。


EXAMPLE-1

输入:s = "aa" p = "a"
输出:false
解释:"a" 无法匹配 "aa" 整个字符串。


EXAMPLE-2

输入:s = "aa" p = "a*"
输出:true
解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。

阅读更多
3 年前发表5 天前更新算法题解 / leetcode3 分钟读完 (大约483个字)

leetcode-299-猜数字游戏


猜数字游戏


题面

> leetcode题目

你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:

写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:

猜测数字中有多少位属于数字和确切位置都猜对了(称为 "Bulls", 公牛), 有多少位属于数字猜对了但是位置不对(称为 "Cows",
奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。 给你一个秘密数字 secret 和朋友猜测的数字 guess
,请你返回对朋友这次猜测的提示。

提示的格式为 "xAyB" ,x 是公牛个数, y 是奶牛个数,A 表示公牛,B 表示奶牛。

请注意秘密数字和朋友猜测的数字都可能含有重复数字。


EXAMPLE

输入: secret = "1807", guess = "7810"
输出: "1A3B"
解释: 数字和位置都对(公牛)用 '|' 连接,数字猜对位置不对(奶牛)的采用斜体加粗标识。





1
2
3


"1807"
  |
"7810"




阅读更多
3 年前发表5 天前更新算法题解 / leetcode3 分钟读完 (大约429个字)

leetcode-598-范围求和II


直线上最多的点数


题面

> leetcode题目

给定一个初始元素全部为 0,大小为 m×n 的矩阵 M 以及在 M 上的一系列更新操作。

操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0≤i<a 以及 0≤j<b
的元素 M[i][j] 的值都增加 1。

在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。


数据范围

 * m 和 n 的范围是 [1,40000]。
 * a 的范围是 [1,m],b 的范围是 [1,n]。
 * 操作数目不超过 10000。


题解


总体思路

脑内想象一下把所有操作的范围画在原矩阵上,可以看出所有的操作都是以原点开始的一个个叠加的子矩阵。

由于每一次操作都是固定的行为+1,所以最大的整数一定出现在叠加次数最多的部分,也就是min(a1,a2,a3,⋯,an)×min(b1,b2,b3,⋯,bn)

!!! note 注意 最终结果不能超过原矩阵的大小,此corner case出现在没有任何操作输入的时候。


代码




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42


#include <iostream>
#include <vector>
using namespace std;

#define _DEBUG
#define MAX 40000
int min(int x, int y)
{
    return x < y ? x : y;
}

class Solution
{
public:
    int maxCount(int m, int n, vector<vector<int>> &ops)
    {
        int minm, minn;
        minm = minn = MAX + 1;
        for (auto iter = ops.begin(); iter != ops.end(); iter++)
        {
            int a = (*iter)[0];
            int b = (*iter)[1];
            minm = min(minm, a);
            minn = min(minn, b);
        }

        int count = minm * minn;
        int max = m * n;
        return min(count, max);
    }
};
// for test
int main()
{
    Solution s;
    vector<vector<int>> test1{{2, 2}, {3, 3}};
    cout << s.maxCount(3, 3, test1) << endl;
    vector<vector<int>> test2{};
    cout << s.maxCount(3, 3, test2) << endl;

    return 0;
}


3 年前发表5 天前更新算法题解 / leetcode7 分钟读完 (大约1083个字)

leetcode-149-直线上最多的点数


直线上最多的点数


题面

> leetcode题目

给你一个数组 points ,其中 points[i]=[xi,yi] 表示 X−Y 平面上的一个点。求最多有多少个点在同一条直线上。


EXAMPLE-1

示例1

输入:points=[[1,1],[2,2],[3,3]]
输出:3


EXAMPLE-2

示例2

输入:points=[[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]
输出:4


阅读更多
上一页
下一页
 * 1
 * 2
 * 3
 * 4

moooyo

SDE-II

Mainland China

文章

34

分类

4

标签

15

关注我



链接

 * Hexohexo.io
 * Bulmabulma.io


分类

 * 后端开发1
   * API网关1
 * 算法题解31
   * leetcode31


最新文章

2023-03-20

迁移博客到Azure Static Web App

2021-12-20

leetcode-475-供暖器

算法题解 / leetcode

2021-11-27

leetcode-519-随机翻转矩阵

算法题解 / leetcode

2021-11-14

leetcode-677-键值映射

算法题解 / leetcode

2021-11-13

leetcode-44-通配符匹配

算法题解 / leetcode


归档

 * 三月 20231
 * 十二月 20211
 * 十一月 20217
 * 六月 202112
 * 五月 202111
 * 四月 20212


标签

OpenResty1
devops1
dp4
infra1
二分法1
二进制1
前缀和4
动态规划7
博弈1
哈希表1
栈1
算法31
背包4
链表1
黑历史1


订阅更新



© 2024 Yu Leng  Powered by Hexo & Icarus

© 2019




×
文章
Hello World Welcome to Hexo! This is your very first post. Check documentation
for more info. If you get any pro leetcode-10-正则表达式匹配 正则表达式匹配 题面 leetcode题目
给你一个字符串 \(s\) 和一个字符规律 \(p\),请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符 '*' 匹配零
leetcode-1049-最后一块石头的重量II 最后一块石头的重量 II 题面 leetcode题目 有一堆石头,用整数数组 \(stones\)
表示。其中 \(stones[i]\) 表示第 \(i\) 块石头的重量。 每一回合,从中选出任意两 leetcode-1074-元素和为目标值的子矩阵数量
元素和为目标值的子矩阵数量 题面 leetcode题目 给出矩阵 \(matrix\) 和目标值
\(target\),返回元素总和等于目标值的非空子矩阵的数量。 子矩阵 \(x_1, y_1, x_ leetcode-1177-构建回文串检测
构建回文串检测 题面 leetcode题目 给你一个字符串 \(s\),请你对 \(s\) 的子串进行检测。 每次检测,待检子串都可以表示为
\(queries[i] = [left, right,
页面
about About me 软件开发工程师 👨‍💻 CS:GO & DNF 🖥️ Switch & XSX 🎮︎ 重度网文爱好者 📚︎ BMI >
28 🍚 软路由、NAS、投
分类
算法题解 (算法题解) leetcode (算法题解/leetcode) 后端开发 (后端开发) API网关 (后端开发/API网关)
标签
黑历史 (黑历史) 算法 (算法) dp (dp) 动态规划 (动态规划) 背包 (背包)