力扣hot100学习记录(七)

240. 搜索二维矩阵 II

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

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

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

题意

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

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

cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& 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 < n && j >= 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,则为交点
代码

cpp 复制代码
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;
    }
};
相关推荐
过期的秋刀鱼!12 分钟前
使用都热编码的分类特征
人工智能·算法·决策树·机器学习·分类·数据挖掘
wabs66621 分钟前
关于哈希表【力扣383.赎金信的思考】
算法·leetcode·散列表
xian_wwq25 分钟前
【学习笔记】工具设计,Agent 的手比大脑更容易出问题-8/16
笔记·学习·agent
晴天1627 分钟前
Agent 全栈学习笔记 1-Day14
数据库·笔记·学习
love_muming32 分钟前
二叉树操作全解析:从递归到层序遍历
java·数据结构·算法·二叉树
AI的探索之旅1 小时前
AI + LLM Wiki 高效学习 OpenCV:我的 8 步闭环方法论
人工智能·opencv·学习
weixin_431600441 小时前
前端对接 SSE 的两种常见方式
前端·后端·学习·ai·sse·nest.js
.道阻且长.9 小时前
2.LeetCode算法习题讲解--双指针--复写零
算法·leetcode·职场和发展
To_OC11 小时前
LC 438 找到所有字母异位词:暴力超时后,我靠滑动窗口一招搞定
javascript·算法·leetcode