1290.二进制链表转整数

1291.顺次数

1292.元素和小于等于阈值的正方形的最大边长

1293.网格中的最短路径

1290.二进制链表转整数

[1290.二进制链表转整数](https://leetcode-cn.com/problems/Convert-Binary-Number-in-a-Linked-List-to Integer)

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。

请你返回该链表所表示数字的 十进制值

样例输入与样例输出 Sample Input and Sample Output

示例 1:

![](https://assets.leetcode-cn.com/aliyun-lc-

upload/uploads/2019/12/15/graph-1.png)

**输入:** head = [1,0,1]
**输出:** 5
**解释:** 二进制数 (101) 转化为十进制数 (5)

示例 2:

**输入:** head = [0]
**输出:** 0

示例 3:

**输入:** head = [1]
**输出:** 1

示例 4:

**输入:** head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]
**输出:** 18880

示例 5:

**输入:** head = [0,0]
**输出:** 0

提示 Hint

提示:

  • 链表不为空。
  • 链表的结点总数不超过 30
  • 每个结点的值不是 0 就是 1

代码

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
int getDecimalValue(ListNode* head) {
int ans(0);
ListNode *p = head;
while(p != nullptr) {
ans = ans * 2 + (p->val);
p = p->next;
}
return ans;
}
};

1291.顺次数

1291.顺次数

我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 1 的整数。

请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表(从小到大排序)。

样例输入与样例输出 Sample Input and Sample Output

示例 1:

**输出:** low = 100, high = 300
**输出:** [123,234]

示例 2:

**输出:** low = 1000, high = 13000
**输出:** [1234,2345,3456,4567,5678,6789,12345]

提示 Hint

提示:

  • 10 <= low <= high <= 10^9

代码

class Solution {
public:
vector<int> sequentialDigits(int low, int high) {
vector<int>ans = {12,23,34,45,56,67,78,89,123,234,345,456,567,678,789,1234,2345,3456,4567,5678,6789,12345,23456,34567,45678,56789,123456,234567,345678,456789,1234567,2345678,3456789,12345678,23456789,123456789};
vector<int>ret;
int p = lower_bound(ans.begin(),ans.end(),low)-ans.begin();
int n = ans.size();
while(p < n && ans[p] <= high) ret.push_back(ans[p++]);
return ret;
}
};

1292.元素和小于等于阈值的正方形的最大边长

1292.元素和小于等于阈值的正方形的最大边长

给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold

请你返回元素总和小于或等于阈值的正方形区域的最大边长;如果没有这样的正方形区域,则返回 0

样例输入与样例输出 Sample Input and Sample Output

示例 1:

**输入:** mat = [[1,1,3,2,4,3,2],[1,1,3,2,4,3,2],[1,1,3,2,4,3,2]], threshold = 4
**输出:** 2
**解释:** 总和小于 4 的正方形的最大边长为 2,如图所示。

示例 2:

**输入:** mat = [[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2]], threshold = 1
**输出:** 0

示例 3:

**输入:** mat = [[1,1,1,1],[1,0,0,0],[1,0,0,0],[1,0,0,0]], threshold = 6
**输出:** 3

示例 4:

**输入:** mat = [[18,70],[61,1],[25,85],[14,40],[11,96],[97,96],[63,45]], threshold = 40184
**输出:** 2

提示 Hint

提示:

  • 1 <= m, n <= 300
  • m == mat.length
  • n == mat[i].length
  • 0 <= mat[i][j] <= 10000
  • 0 <= threshold <= 10^5

代码

class Solution {
public:
int s[300][300];
int n, m;
int maxSideLength(vector<vector<int>>& mat, int threshold) {
this->n = mat.size(), this->m = mat[0].size();
memset(s, 0, sizeof(s));
for(int i = 0; i < n; ++i)
for(int j = 0; j < m; ++j) {
s[i][j] = mat[i][j];
if(i)
s[i][j] += s[i - 1][j];
if(j)
s[i][j] += s[i][j - 1];
if(i && j)
s[i][j] -= s[i - 1][j - 1];
} int first = 0, middle, half, len = min(n, m);
const int key = threshold;
while(len > 0) {
half = len >> 1;
middle = first + half;
//cout << middle << "\n";
if(cal(middle) > key)
len = half;
else {
first = middle + 1;
len = len - half - 1;
}
}
//cout << "first " << first << "\n";
return cal(first)>key ? first - 1 : first;
} private : int getSum(int x1, int y1, int x2, int y2) {
int ans = s[x2][y2];
if(x1 && y1)
ans += s[x1 - 1][y1 - 1];
if(x1)
ans -= s[x1 - 1][y2];
if(y1)
ans -= s[x2][y1 - 1];
//cout << x1 << " " << y1 << " " << x2 << " " << y2 << ":" << ans << "\n";
return ans;
}
int cal(int x) {
if(x == 0) return 0;
int ans = 0x3f3f3f3f;
for(int i = x - 1; i < n; ++i)
for(int j = x - 1; j < m; ++j) {
int t = getSum(i - x + 1, j - x + 1, i, j);
ans = min(ans, t);
}
//cout << "len " << x << ":" << ans << endl;
return ans;
}
};

1293.网格中的最短路径

[1293.网格中的最短路径](https://leetcode-cn.com/problems/Shortest Path in a Grid with Obstacles Elimination)

给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物)。每一步,您都可以在空白单元格中上、下、左、右移动。

如果您 最多 可以消除 k 个障碍物,请找出从左上角 (0, 0) 到右下角 (m-1, n-1)

的最短路径,并返回通过该路径所需的步数。如果找不到这样的路径,则返回 -1。

样例输入与样例输出 Sample Input and Sample Output

示例 1:

**输入:**
grid =
[[0,0,0],
[1,1,0],
[0,0,0],
[0,1,1],
[0,0,0]],
k = 1
**输出:** 6
**解释:** 不消除任何障碍的最短路径是 10。
消除位置 (3,2) 处的障碍后,最短路径是 6 。该路径是 (0,0) -> (0,1) -> (0,2) -> (1,2) -> (2,2) -> **(3,2)** -> (4,2).

示例 2:

**输入:**
grid =
[[0,1,1],
[1,1,1],
[1,0,0]],
k = 1
**输出:** -1
**解释:** 我们至少需要消除两个障碍才能找到这样的路径。

提示 Hint

提示:

  • grid.length == m
  • grid[0].length == n
  • 1 <= m, n <= 40
  • 1 <= k <= m*n
  • grid[i][j] == 0 **or** 1
  • grid[0][0] == grid[m-1][n-1] == 0

代码

class Solution {
public:
int shortestPath(vector<vector<int>>& grid, int k) {
queue<node>que;
const int inf = 0x3f3f3f3f;
int ans = inf;
n = grid.size(), m = grid[0].size();
que.push(node(0, 0, k, 0)); while(!que.empty()) {
node cur = que.front();
que.pop();
if(grid[cur.r][cur.c])
cur.k--;
vis[cur.r][cur.c][k-cur.k] = true; if(cur.r == n - 1 && cur.c == m - 1 && cur.k >= 0) {
ans = min(ans, cur.s);
}
for(int i = 0, rr, cc; i < 4; ++i) {
rr = cur.r + dr[i], cc = cur.c + dc[i];
if(inBound(rr, cc) && !vis[rr][cc][k-cur.k] && k-cur.k <= n*m) {
que.push(node(rr, cc, cur.k, cur.s + 1));
vis[rr][cc][k-cur.k] = true;
}
}
}
return ans == inf ? -1: ans;
} private :
struct node {
int r, c, k, s; node(int _r,int _c,int _k,int _s):r(_r),c(_c),k(_k),s(_s){};
}; inline bool inBound(int r, int c) {
return r >= 0 && r < n && c >= 0 && c < m;
}
const int dr[4] = {1, -1, 0, 0};
const int dc[4] = {0, 0, 1, -1};
int n,m;
bool vis[41][41][41*41];
};

LeetCode 第 167 场周赛的更多相关文章

  1. LeetCode 第 165 场周赛

    LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...

  2. Leetcode第 217 场周赛(思维量比较大)

    Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...

  3. Leetcode 第133场周赛解题报告

    今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...

  4. LeetCode第151场周赛(Java)

    这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ...

  5. LeetCode第152场周赛(Java)

    这算是我第一次正式参加 LeetCode 的周赛吧.通过两道题.意料之中(通过上次模拟可以看出来).总的来说,脑袋还是不太灵光.想的有点慢.全球第一名 0:10:19 就全部通过...感觉我的智商被狠 ...

  6. Leetcode 第137场周赛解题报告

    今天的比赛的题目相对来说比较「直白」,不像前几周都是一些特定的算法,如果你没学过不可能想出来. 做了这些周,对leetcode比赛的题目也发现了一些「规律」. 一般前两道题都很「简单」,只要有想法,直 ...

  7. LeetCode 第 150 场周赛

    一.拼写单词(LeetCode-1160) 1.1 题目描述 1.2 解题思路 由于给定的chars,每个字母只能用一次,所以用大小为26的数组charsArray来表示a-z(例如charsArra ...

  8. LeetCode 第 196 场周赛 (题目:5452-5455,这是参加过最坑的周赛,暴力n^2居然可以过)

    5452. 判断能否形成等差数列   给你一个数字数组 arr . 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 . 如果可以重新排列数组形成等差数列,请返回 tru ...

  9. Leetcode 第136场周赛解题报告

    周日的比赛的时候正在外面办事,没有参加.赛后看了下题目,几道题除了表面要考的内容,还是有些能发散扩展的地方. 做题目不是最终目的,通过做题发现知识盲区,去研究学习,才能不断提高. 理论和实际是有关系的 ...

随机推荐

  1. django使用mysql的时区问题解决

    1.如果是linux 将系统的时区表导入mysql. mysql_tzinfo_to_sql /usr/share/zoneinfo 2.如果是windows 下载时区表 然后导入时区表,file_n ...

  2. docker运行puppeteer出现Page crash解决方案

    Docker默认文件空间64MB.如果puppeteer运行的时候超过这个内存就出现了.Page crash.可以使用docker run --shm-size=256m指定一个更大的内存即可.

  3. Kotlin 中类函数

    在kotlin中函数可以在类外部定义也可以在类内部定义,前者即为全局函数,后者,是类成员函数,语法一样 package loaderman.demo class Person { fun demo(n ...

  4. Python - pytesseract 机器视觉

    机器视觉  - tesseract ( 验证码 ) 安装 Ubuntu sudo apt-get install tesseract-ocr Windows 下载安装包 添加环境变量(Path) :搜 ...

  5. setInterval、clearInterval的回调函数,实现函数间调用的先后顺序

    定义: var waitUnitil=function (untillCallBack, nextStepCallBack, count) { if (count == null) { count = ...

  6. SyncToy

    • synchronize :在这个模式下,SyncToy会使得两个文件夹完全一致,无论在哪一个文件夹中操作,对应的操作相当于都在另一个文件夹中执行了一次.(也就是我们所说的“同步”).• echo: ...

  7. ios -转载-真机提示 iPhone has denied the launch request 问题

    环境: 手机版本12.1,Xcode10.0问题: 真机时提示 iPhone has denied the launch request ,试过了的各种方法,最终解决方法如下:1. 2. 3.清理Xc ...

  8. Consul 随记

    consul 包含多个组件,但是作为一个整体对外提供服务发现和服务配置工具: 提供的关键特性有: 服务发现:发现的是服务对应的IP地址和PORT端口号 健康检查:检查服务节点状态 Key/Value存 ...

  9. CentOS下Hadoop及ZooKeeper环境搭建

    1. 测试环境 操作系统 CentOS 6.5. 总共5台机器,前两台作为namenode,称之为 nn01.nn02:后三台作为datanode,称为 dn01.dn02.dn03. 每台机器的内存 ...

  10. Oracle GoldenGate OGG管理员手册

    第一章 系统实现简述 前言 编写本手册的目的是为系统管理员以及相关操作人员提供 Oracle  Goldengat  软 件的日常维护和使用的技术参考: 3 ORACLE 第二章 OGG 日常维护操作 ...