IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 坚持刷力扣题第二周!!! -> 正文阅读

[数据结构与算法]坚持刷力扣题第二周!!!

目录

前言

2021-10-16

题目·

1.链表相交

?2.两数相加

3.反转链表2

题解?

1.链表相交

2.两数相加

3. 反转链表:二

代码

1.链表相交

2.两数相加?

3.反转链表二?

总结


前言

接着上一篇文章,我已经坚持刷了八天的题和更新了八天的博客,八天一共刷了25题,有难有易,坚持一周对我来说已经是很大的一个进步了,但是这个活动昨天才开始哦!第一届LeetCode刷题打卡赢现金活动,其他小伙伴快来和我们一起卷起来吧!!!!

肝就完事,不说了我要上号了!!

2021-10-16

题目·

1.链表相交

?2.两数相加

?

3.反转链表2

?

?

题解?

1.链表相交

这个链表相交其实就是相交的地方是相同的地址,所以我们可以遍历,然后在判定两个链表是否相等。

如果两个链表长度相等的话,就直接可以使用循环判断来判断是否四相同的链表,如果链表不是等长的话,先求出两个链表的长度,然后取两者的差值,然后链表较长的那个向前移动差值个单位,然后在开始for循环比较!!

2.两数相加

思路:我们可以先遍历链表,然后把链表里面的值存取到数组中,然后在从数组里面取出相加获得所得值,并转换为字符串的形式,然后创建一个新的指针,指向每一个字符串,并输出这个链表。?

3. 反转链表:二

思路:

先把指定区域的链表给拆出来,定义一个如反转链表第一题一样的函数,然后把指定区域的链表给传参到这个数组,反转后在传出,并给外面的链表链接!!

下面我花了一个简图,大家凑合着看看嘿嘿嘿嘿。

?

代码

1.链表相交

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
    struct ListNode *p1 = headA;
    struct ListNode *p2 =headB;
    int i = 0 , j = 0 ,sum ;
    p1 = headA;
    p2 = headB;
    while (p1 != NULL){
        p1 = p1 -> next;
        ++i;
    }
    while ( p2 != NULL){
        p2 = p2 -> next;
        j++;
    }
    p1 = headA;
    p2 = headB;
    if ( i > j){
        sum = i - j;
        while (sum> 0){
            p1 = p1->next;
            --sum;
        }}else{
            sum = j - i;
            while (sum ){
                p2 = p2 -> next;
                --sum;
            }

        }
    

    
    while (p1 && p2 ){
        if (p1 == p2 ){
            return p1;
        }
        p1 = p1 -> next ;
        p2 = p2 -> next ;}
    return NULL;
    
}

2.两数相加?

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
def ltn(listnode):
#   将ListNode转换为list,并储存到listTemp里
    listTemp=[]
    temp=0
    while temp<100:
        try:
            listTemp.append(listnode.val)
            listnode=listnode.next
        except:
            break
        temp+=1
#   将list翻转并转换成数字(string形式)
    listTemp.reverse()
    string=""
    for item in listTemp:
        string+=str(item)
    return string

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        temp=0
        num1=ltn(l1)
        num2=ltn(l2)
#       利用上述函数将l1和l2转换为数字
        sum=str(int(num1)+int(num2))
#       转为数字,相加
        sumlist=ListNode(int(sum[0]))
        try:
            for order in range(1,len(sum)):
                sumlist=ListNode(int(sum[order]),sumlist)
        except:
            pass

        return(sumlist)

3.反转链表二?

?

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


void reverse( struct ListNode *head){
    struct ListNode *pre = NULL;
    struct ListNode *cur = head;

    while (cur != NULL) {
        struct ListNode *next = cur->next;
        cur->next = pre;
        pre = cur;
        cur = next;
    }

}

struct ListNode* reverseBetween(struct ListNode* head, int left, int right){
    struct ListNode * dump = malloc(sizeof(struct ListNode));
    dump -> val = -1;
    dump -> next = head;
    struct ListNode * res = dump;
    for ( int i = 0; i < left -1; i++){
        res = res -> next ;}
    struct ListNode * right1 = res;
    for ( int j = 0 ; j < right - left + 1; j++ ){right1 = right1 -> next ;}
    struct ListNode *leftNode = res->next;
    struct ListNode *curr = right1->next;

    
    res->next = NULL;
    right1->next = NULL;

    
    reverse(leftNode);

    res->next = right1;
    leftNode->next = curr;
    return dump->next;
}



    

总结

又到了每天的总结时刻嘿嘿嘿嘿!!!

今天是第九天写算法题,我今天看了我总共刷的力扣有50道题嘿嘿。

?虽然mid和hard还是很少,但是我还在进步,我相信慢慢的我掌握的算法知识储备会越来越多,对一些算法题也会越来越熟练的,十分期待那个时候的我会变成什么样子,就先从小目标慢慢的开始吧,相信自己,坚持住!!!!

看一下今天的手稿嘿嘿嘿嘿嘿!!!

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 12:14:11  更:2021-10-17 12:15:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:25:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码