首页 > 其他分享 >力扣刷题(1)

力扣刷题(1)

时间:2024-08-25 12:21:40浏览次数:15  
标签:ListNode int next 力扣 l2 l3 刷题 more

两数之和

两数之和-力扣
在这里插入图片描述

思路:

  1. 动态开辟一个数组,用来存放下标;
  2. 两个for循环嵌套来判断,数组中的两个数相加是否与target相等
  3. 若相等,则将 * returnSize赋值为2,表示数组中两个数,并将arr数组进行赋值
  4. 若不存在两数相加为target的数,则将*returnSize赋值为0
int* twoSum(int* nums, int numsSize, int target, int* returnSize) 
{
    int* arr=(int*)malloc(sizeof(int)*2);
    for(int i=0;i<numsSize;i++)
    {
        for(int j=i+1;j<numsSize;j++)
        {
            if(nums[i]+nums[j] == target)
            {
                arr[0]=i;
                arr[1]=j;
                *returnSize=2;
                return arr;
            }
        }
    }
    *returnSize=0;
    return arr;
}

在这里插入图片描述

两数相加

两数相加-力扣-链表

在这里插入图片描述
思路:

  1. 创建头结点l3,创建pcur代替l3向后遍历,创建more表示进位数
  2. l1l2more不为空时,进入循环
  3. l1l2不为空时,将他们的val值加入more
  4. 开辟新结点,将新结点的val值赋值为more%10next赋值为NULL,并将新结点插入pcurnext中,并将more/10,这样才能算入进位
  5. 最后返回l3next(因为l3为头结点,l3next才是链表真正的开始)
typedef struct ListNode ListNode;
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) 
{
    ListNode* l3 =(ListNode*)malloc(sizeof(struct ListNode));
    ListNode* pcur=l3;
    int more= 0;
    while(l1 || l2 || more)
    {
        if(l1)
        {
            more+=l1->val;
            l1=l1->next;
        }
        if(l2)
        {
            more+=l2->val;
            l2=l2->next;
        }
        ListNode* tmp=(ListNode*)malloc(sizeof(ListNode));
        tmp->val = more%10;
        tmp->next = NULL;
        pcur->next=tmp;
        pcur = pcur->next;
        more /= 10;
    }
    return l3->next;
}

在这里插入图片描述

无重复字符的最长字串

无重复字符的最长字串-力扣
在这里插入图片描述
解题思路来自于:滑动窗口-灵茶山艾府
创建一个bool类型的数组,当数组不重复时,数组向右扩展,增大窗口;当出现相同时,数组的左边向右移动,减小窗口

int lengthOfLongestSubstring(char* s) {
    int ans = 0;
    int left = 0;
    bool has[128] = {}; 
    for (int right = 0; s[right]; right++) 
    {
        char c = s[right];
        while (has[c]) 
        {
            has[s[left++]] = false;
        }
        has[c] = true;
        int len = right - left + 1;
        if(ans < len)
        {
            ans=len;
        }
    }
    return ans;
}

在这里插入图片描述

标签:ListNode,int,next,力扣,l2,l3,刷题,more
From: https://blog.csdn.net/2302_79180171/article/details/141499412

相关文章

  • 秋招力扣Hot100刷题总结——二叉树
    二叉树相关的题目基本上都会使用递归,因此做二叉树的题目时首先使用递归,明确递归结束的条件。1.二叉树的层序遍历题目链接题目要求:给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。代码及思路使用队列存储每一层的节点,左边节点先......
  • 二叉树刷题(1)
    二叉树题目讲解(1)一、构建二叉树并且遍历(1)思路(2)代码二、对称二叉树1、思路2、代码三、相同的树1、思路2、代码四、单值二叉树1、思路2、代码五、另一棵树的子树1、思路2、代码一、构建二叉树并且遍历题目描述:编一个程序,读入用户输入的一串先序遍历字符串,根据此字......
  • 力扣热题100_贪心算法_55_跳跃游戏
    文章目录题目链接解题思路解题代码题目链接55.跳跃游戏给你一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。示例1:输入:nums=[......
  • 力扣: 设计链表
    文章目录需求代码结尾需求你可以选择使用单链表或者双链表,设计并实现自己的链表。单链表中的节点应该具备两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果是双向链表,则还需要属性prev以指示链表中的上一个节点。假设链表中的......
  • 24暑假算法刷题 | Day39 | 动态规划 VII | LeetCode 198. 打家劫舍,213. 打家劫舍 II,33
    目录198.打家劫舍题目描述题解213.打家劫舍II题目描述题解337.打家劫舍III题目描述题解打家劫舍的一天......
  • 力扣: 移除链表元素
    文章目录需求虚拟头结点法原头结点法结尾需求给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输入:head=[],val=1输......
  • 76. 最小覆盖子串【 力扣(LeetCode) 】
    一、题目描述给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串“”。注意:对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量。如果s中存在这样的子串,我们保证......
  • 反序列化刷题(二)
    反序列化刷题web259(SSRF)1、explod(',',"hello,ju,hey"):把字符串以逗号为判断点分为若干个数组,hellojuhey2、array_pop($x):删除数组中的最后一个元素1、$_SERVER['HTTP_X_FORWARDED_FOR']用来获取数据包的IP地址;我们目标要ip=127.0.0.1;这里可以用x-forwarded-for:127.0.0.1......
  • 48. 旋转图像【 力扣(LeetCode) 】
    一、题目描述给定一个n×n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转90度。你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。二、测试用例示例1:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4......
  • 考研数学针对性训练,按章节刷题
    前言考研数学目前大家都在如火如荼地进行强化,有一些同学已经遇到了一些问题,某个章节学不会,想专项复习一下,但是又不知道怎么搞,之前也有很多小伙伴问我如何按章节刷题,那么在此给大家解答一下。方法一在考研数学欧几里得里的刷题模块,可以按章节刷题,各个大章以及小节都可以选择......