leetcode(61-65)

leetcode刷题(61-65) 算法是码农的基本功,也是各个大厂必考察的重点,让我们一起坚持写题吧。遇事不决,可问春风,春风不语,即是本心。我们在我们能力范围内,做好我们该做的事,然后相信一切都事最好的安排就可以啦,慢慢来,会很快,向前走,别回头。 阅读详情

61. 旋转链表

给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。

示例 1:

输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL
解释:
向右旋转 1 步: 5->1->2->3->4->NULL
向右旋转 2 步: 4->5->1->2->3->NULL

示例 2:

输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL
解释:
向右旋转 1 步: 2->0->1->NULL
向右旋转 2 步: 1->2->0->NULL
向右旋转 3 步: 0->1->2->NULL
向右旋转 4 步: 2->0->1->NULL
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) {
        if(head == NULL) return 0;
        if(k==0) return head;
        ListNode* tmpHead = head;
        int len=1;
        while(tmpHead->next != NULL) {
            len++;
            tmpHead=tmpHead->next;
        }
        tmpHead->next=head;
        k%=len;
        for(int i=1; i<=len-k; i++){
            tmpHead = head;
            head=head->next;
        }
        tmpHead->next=NULL;
        return head;
    }
};

62. 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。

问总共有多少条不同的路径?

例如,上图是一个7 x 3 的网格。有多少可能的路径?

说明:m 和 n 的值均不超过 100。

示例 1:

输入: m = 3, n = 2
输出: 3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向右 -> 向下
2. 向右 -> 向下 -> 向右
3. 向下 -> 向右 -> 向右

示例 2:

输入: m = 7, n = 3
输出: 28
class Solution {
public:
    int uniquePaths(int m, int n) {
        vector<vector<int>> dp(m,vector<int>(n));
        for(int i=0; i<m; i++) dp[i][0]=1;
        for(int i=0; i<n; i++) dp[0][i]=1;
        for(int i=1; i<m; i++){
            for(int j=1; j<n; j++){
                dp[i][j] = dp[i-1][j]+dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
};

63. 不同路径 II

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 1 和 0 来表示。

说明:m 和 n 的值均不超过 100。

示例 1:

输入:
[
  [0,0,0],
  [0,1,0],
  [0,0,0]
]
输出: 2
解释:
3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:
1. 向右 -> 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右 -> 向右
class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m=obstacleGrid.size(),n=obstacleGrid[0].size();
        vector<vector<int>> dp(m,vector<int>(n));
        for(int i=0; i<m; i++) {
            if(obstacleGrid[i][0]==0) dp[i][0]=1;
            else break;
        }
        for(int i=0; i<n; i++) {
            if(obstacleGrid[0][i]==0) dp[0][i]=1;
            else break;
        }
        for(int i=1; i<m; i++){
            for(int j=1; j<n; j++){
                if(obstacleGrid[i][j]==0) dp[i][j] = dp[i-1][j]+dp[i][j-1];
                else dp[i][j] = 0;
            }
        }
        return dp[m-1][n-1];
    }
};

64. 最小路径和

给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

示例:

输入:
[
  [1,3,1],
  [1,5,1],
  [4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。
class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int m=grid.size();
        int n=grid[0].size();
        if(!m || !n) return 0;
        int dp[m][n];
        dp[0][0] = grid[0][0];
        for(int i=1; i<m; i++) dp[i][0] = dp[i-1][0]+grid[i][0];
        for(int i=1; i<n; i++) dp[0][i] = dp[0][i-1]+grid[0][i];
        for(int i=1; i<m; i++){
            for(int j=1; j<n; j++){
                dp[i][j] = min(dp[i-1][j], dp[i][j-1])+grid[i][j];
            }
        }
        return  dp[m-1][n-1];
    }
};

65. 有效数字

验证给定的字符串是否为数字。

例如:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。

class Solution {
public:
    bool isINT(string s){
        if (s.empty()) return false;
        for (int i = 0; i <s.size(); ++i){
            if (i == 0){
                if ((s[i] == '+' || s[i] == '-') && s.size() != 1 || isdigit(s[i])) continue;
                else return false;
            }
            else{
                if (!isdigit(s[i])) return false;
            }
        }
        return true;
    }
 
    bool isFlOAT(string s){
        if (s.empty() || s == "." || s == "-." || s == "+.") return false;
        int flag = 0;
        for (int i = 0; i < s.size(); ++i){
            if (i == 0 && (s[i] == '+' || s[i] == '-') && s.size() != 1) continue;
            if (!isdigit(s[i])) {
                if (s[i] == '.' && !flag) ++flag;
                else return false;
            }
        }
        return true;
    }
 
    bool isNumber(string s) {
        if (s.empty()) return false;
        int flag = 0, p = -1, q = s.size();
        while (++p<s.size() && s[p] == ' ') continue;	
        while (--q >= 0 && s[q] == ' ') continue;      
        if (p > q) return false;
        if (isFlOAT(s.substr(p, q - p + 1)) || isINT(s.substr(p, q - p + 1))) return true;
        else{
            for (int i = p; i <= q; ++i){
                if (s[i] == 'e' && isFlOAT(s.substr(p, i - p)) && isINT(s.substr(i + 1, q - i))) return true;
            }
            return false;
        }
    }
};

(以上题目均摘自leetcode)

Gartner《构建可扩展数据产品建设框架》心得 数据产品化:从概念到落地的实践指南 当前企业正从传统数据需求模式转向数据产品化新范式。本文系统阐述了数据产品的核心价值、定义分类和实施框架,指出成功关键是将数据包装为可复用、可扩展的产品。Gartner框架强调产品思维,提出4阶段12步实施路径,涵盖设计、工程、发布和监控全流程。文章特别提醒要避免7大常见误区,如简单重命名报表、忽视元数据治理等,建议采取MVP策略,90天内完成从价值验证到产品落地的闭环。实施中需平衡技术选型与业务需求,建立跨职能团队,并通过AARRR模型持续追踪产品价值。 阅读详情

相关推荐

不用编码器也能玩转BLDC?手把手教你反电动势定位实战

本文详细介绍了无刷直流电机(BLDC)的无传感器控制方案——反电动势定位法,通过STM32实战演示如何实现基本控制。文章涵盖核心原理、硬件准备、信号采集技巧及代码实现,特别适合静音风扇、小型机器人等对成本敏感的应用场景,帮助开发者降低硬件成本并提升系统可靠性。

lg888的博客 898

LeetCode刷题--- 61. 旋转链表(快慢指针+闭合为环)

大家好,又见面了,我是夜阑的狗,本文是专栏【LeetCode题解】专栏的第20篇文章,主要讲解的是LeetCode 61. 旋转链表(快慢指针+闭合为环))。【LeetCode题解(持续更新中)】, 此专栏是我是夜阑的狗对LeetCode问题的讲解,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。🌹 🌹 🌹也欢迎你,关注我。👍 👍 👍!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!

JMFive的博客 1207

避坑指南:用pygrib处理ERA5气象数据时遇到的5个典型问题

本文总结了使用pygrib库处理ERA5气象GRIB数据时常见的五个典型问题及解决方案,涵盖数据获取、内存管理、时间处理、空间插值和性能优化。重点针对气象数据插值这一核心挑战,提供了处理不规则网格、缺失值和跨日期变更线的实用代码示例与优化策略,帮助用户高效、稳定地完成气象数据分析工作。

weixin_28224217的博客 185

【刷题之路Ⅱ】LeetCode 61. 旋转链表

而当k等于链表的长度是,其效果就等同于根本没有翻转,所以当k大于或等于链表的长度时候,设链表的长度为len,那么其效果就等同于翻转了k mod len个节点,所以我们就可以先算出链表的长度len,然后执行k %= len,若执行后k等于0,那我们就不用翻转直接返回head即可。所以我们就可以先找到链表的第k个节点和尾节点,然后将这部分链表接到链表的前面即可,但因为是单链表,所以我们实际还要找到的其实是链表的倒数第k + 1个节点(也就是倒数第k个节点的前一个节点)。时间复杂度:O(n),n为链表的长度。

kk702392702的博客 1072

基于Agent与大模型的性能测试脚本自动化生成实践

性能测试是软件质量保障的关键环节,其核心在于模拟真实用户负载以评估系统在高并发下的表现。传统脚本编写依赖人工,效率低下且易出错。通过引入智能体(Agent)与大语言模型(LLM)技术,可实现从自然语言描述或接口文档到可执行脚本的自动化转换。Agent负责任务规划与工具调用,LLM则提供强大的意图理解与代码生成能力,二者结合能精准解析测试场景、自动处理参数化与接口关联等复杂逻辑。该技术方案显著提升了脚本生成效率与准确性,尤其适用于持续集成、海量接口回归等需要快速构建测试场景的工程实践。本文以JMeter和Lo

weixin_28718769的博客 259

流式数据湖存储技术,Apache Paimon是什么?

是一项流式数据湖存储技术,可以为用户提供高吞吐、低延迟的数据摄入、流式订阅以及实时查询能力。Paimon 采用开放的数据格式和技术理念,可以与 Apache Flink / Spark / Trino 等诸多业界主流计算引擎进行对接,共同推进 Streaming Lakehouse 架构的普及和发展。

一个写湿的程序猿 2万+

LeetCode61. 旋转链表(通俗易懂Java版)

给你一个链表的头节点 `head` ,旋转链表,将链表每个节点向右移动 `k` 个位置。 思路:假设链表的长度为 `n`,首先 当向右移动的次数 `k`,其满足条件 `k≥n` 时,仅需要向右移动 `k mod n` 次;因为每 n 次移动都会让链表变为原状。 其次,新链表的最后一个节点为原链表的`第 n - k 个节点`(从 1 开始计数)。 注意:临界情况的判定,比如:链表为空、链表只有一个节点;k为0或k为链表长度的整数倍。

健身变秃,coding变强 1452

图解凸函数与凹函数:别再被数学定义搞晕了!

本文通过图解和生活化类比,深入浅出地解释了凸函数与凹函数的数学定义及其与日常直觉的差异。文章详细介绍了凸函数的图像特征、数学定义(包括二阶导数判断)、在机器学习中的重要性,以及常见误区和实际应用中的判断技巧,帮助读者彻底理解这一关键数学概念。

weixin_29159441的博客 656

Leetcode-61: 旋转链表

题目链接 https://leetcode-cn.com/problems/rotate-list/ 题目 给你一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。 示例 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2: 输入:head = [0,1,2], k = 4 输出:[2,0,1] 提示 链表中节点的数目在范围[0, 500]内 -100 <= Node.val ...

道纪书生的博客 198

樽海鞘优化算法详解:原理、实现与应用

本文详细介绍了樽海鞘优化算法(SSA)的原理、实现与应用。该算法模拟樽海鞘链式群体行为,将优化问题解空间映射为群体移动空间,通过领导者引导和追随者跟随的协作机制寻找最优解。文章从生物特性、数学模型到Python代码实现进行了系统阐述,包括种群初始化、位置更新公式和收敛因子等核心要素,并展示了算法在函数优化等领域的应用潜力。该算法具有结构简单、参数少、实现容易等特点,在多种优化问题上表现良好。

qq_42212808的博客 646

C语言试题一之计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和

1、题目 计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和 2、源代码实现 #include <stdio.h> #include <math.h> double fun1(int n) { if (n <= 0) return 0; int i; double sum = 0.0; for (i = 1; i <= n;...

码莎拉蒂 1万+

LeetCode 61. 旋转链表 【c++/java详细题解】

目录1、题目2、思路3、c++代码4、java代码 1、题目 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例 2: 输入:head = [0,1,2], k = 4 输出:[2,0,1] 提示: 链表中节点的数目在范围 [0, 500] 内 -100 <= Node.val <= 100 0 <= k <= 2 * 109 2、思路

林深不见鹿 的博客 3602

Unreal5从入门到精通之如何实现移动端触屏滑动手势

随着移动设备的普及,越来越多的游戏和应用选择在移动平台上发布。Unreal Engine 5(UE5)作为一款强大的游戏引擎,提供了丰富的工具和功能,帮助开发者打造出色的移动体验。UE5不仅提升了图形质量,还大幅简化了开发流程,使得开发者能够更专注于游戏设计和用户体验。在移动游戏中,触屏滑动手势是用户与应用互动的主要方式之一。然而,许多开发者在实现这些功能时常常遇到困难。为了填补这一知识空白,本篇文章将详细介绍如何在UE5中实现移动端触屏滑动手势,帮助你从入门到精通,提升你的开发技能。

TxNet 1137

LeetCode 61~65

前言 本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构请见LeetCode 刷题汇总 正文 幕布 幕布链接 61. 旋转链表 题解 My clean C++ code, quite standard (find tail and reconnect the list)​ 找到旋转点,注意取模 /** * Definition for singly-linked list. * class ListNode(va

Shockang的博客 5941

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【LeetCode Solutions】LeetCode 61 ~ 65 题解

【LeetCode Solutions】LeetCode 61 ~ 65 题解

一只快乐的小蒟蒻~ 1145

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【JavaScript】LeetCode:61-65

从根结点开始与单词的第一个字符进行匹配,一直匹配到前缀链上没有对应的字符,这时开始不断开辟新的结点,直到插入完单词的最后一个字符,并将最后一个结点isEnd = true,表示它是一个单词的末尾。从根结点开始一直向下匹配,如果前缀链上没有对应的字符就返回false,如果直到最后一个字符都匹配,则返回所匹配最后一个节点的isEnd。和查找类似,只是不需要判断最后一个字符结点的isEnd,因为既然能匹配到最后一个字符,就一定有单词以prefix为前缀。前缀匹配:判断Trie中是否有以prefix为前缀的单词。

weixin_45980065的博客 1242

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LeetCode 实践练习61-65

LeetCode—61(旋转链表) 方法:此题一种方法,是利用快慢指针,快指针先走k步,然后两个指针一起走,当快指针走到末尾时,满指针指的下一个位置即是新顺序的头结点(特殊情况链表为空,k>n)。另一种方法,一个指针即可,就是先遍历整个链表获得链表长度n,然后链表的头和尾接起来,然后往后走 n - (k % n),就到达了新链表的头节点前一个点,这是断开链表即可。 class Soluti...

qq_40104034的博客 188

leetcode/61-65

207-课程表 class Solution { List<List<Integer>> edgs; int[] visited; boolean valid = true; public boolean canFinish(int numCourses, int[][] prerequisites) { edgs = new ArrayList<>(); for(int i=0;i<numC.

fan__lee的博客 429

每日5题Day13 - LeetCode 61 - 65

好讨厌这个题,不写了。

alimamaalala的博客 553

力扣爆刷第115天之CodeTop100五连刷61-65

思路:使用栈,栈内存索引,遇到左括号,入栈,遇到右括号出栈,故栈底要初始化一个值,来满足计算括号长度,举例(),可以压入-1,左括号再压入0,右括号来了,0出栈,i= 1,减去栈顶的-1,长度为2,初始化验证完毕。思路:判断是否是二叉树,关键在于每个节点的左右子树高度差不能大于1,所以一直后序遍历求深度,在其过程中判断是否非法,非法记录全局变量,即可,另外可以早停利用全局变量。题目链接:https://leetcode.cn/problems/symmetric-tree/description/

qq_43511039的博客 560

力扣爆刷第95天之hot100五连刷61-65

题目链接:https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/description/?思路:分别搜索左边界和右边界}else {left : -1;

qq_43511039的博客 640

Leetcode Hot100 61-65

法二:创建新的Node节点,Node节点包括val和min。自己实现栈,可以用单链表的头插法。一个栈正常存,另一个存最小值。

Tom336853的博客 256

leetcode题解python版:61-65

61、旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 解:先求出链表的长度,让k<n,然后把链表变成一个圈,最后在n-k的地方截断。 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def rotat

baidu_41689104的博客 219

力扣爆刷第159天之TOP100五连刷61-65(翻转单词、对称二叉树、遍历求和)

思路:很经典的题目,翻转字符串中的单词,只需要把所有单词都翻转,然后再整体翻转就可以。思路:本题怎么都可以做,求的是从根节点到叶子节点的每一条通路都是一个数,这个数是从根节点拼接到叶子节点的。题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/description/

qq_43511039的博客 1229

面试笔试杂项积累-leetcode 61-65

61.61-Rotate List-Difficulty:Medium Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given 1->2->3->4->5->NULL and k = 2, return 4->5->1->2->3->NUL

wolf96的专栏 504

Python小白 Leetcode刷题历程 No.61-No.65 旋转链表、不同路径、不同路径Ⅱ、最小路径和、有效数字 (有题干 有代码 有思路心得)

文章目录Python小白 Leetcode刷题历程 No.61-No.65 旋转链表、不同路径、不同路径Ⅱ、最小路径和、有效数字写在前面:No.61.旋转链表No.62.不同路径No.63.不同路径ⅡNo.64.最小路径和No.65.有效数字 Python小白 Leetcode刷题历程 No.61-No.65 旋转链表、不同路径、不同路径Ⅱ、最小路径和、有效数字 写在前面:...

LanXiu_的博客 621
上一篇: leetcode(56-60)
下一篇: leetcode(66-70)
小小螺丝刀
博客等级 码龄10年 41粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值