小工具知识网

当前位置: 首页 > 行业知识 > 力扣hot100学习记录(七)

行业知识

力扣hot100学习记录(七)

2026-10-27 16:02:34 来源:互联网转载

240. 搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

每行的元素从左到右升序排列。

每列的元素从上到下升序排列。

题意

在二维矩阵中搜索是否存在一个目标值,该矩阵每一行每一列都是升序排列;

思路

从矩阵右上角开始判断,如果该点的值小于目标值,则这一行删除(因为该行其他值都小于该值),同理如果该点的值大于目标值,则这一列删除。以此来判断矩阵中是否存在目标值。

代码

class Solution {public:    bool searchMatrix(vector& matrix, int target) {        if(matrix.empty()|| matrix[0].empty()) return false;        int n = matrix.size(), m = matrix[0].size();        int i = 0, j = m - 1;        while(i = 0){            if(matrix[i][j] == target) return true;            else if(matrix[i][j] > target) j--;            else i++;        }        return false;    }};

160. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

题意

给定两个单链表的头节点,找到两个单链表相交的起始节点。

思路

定义两个指针,分别从两个链表头开始搜索,如果搜到末尾(pA=null,则pA = headB),以此继续搜索,直到pA == pB,则为交点

代码

class Solution {public:    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {        auto p = headA, q = headB;        while(p != q){            p = p ? p -> next : headB;            q = q ? q -> next : headA;        }        return p;    }};

上一篇:怎么给手表连接服务器?

下一篇:Crond源码深度解析,揭秘定时任务工作原理