首页 > 编程语言 >算法总结

算法总结

时间:2022-08-15 23:02:24浏览次数:35  
标签:总结 Node ListNode cur val next 链表 算法

今天放两道刚刷的关于链表的题

package com.chenghaixiang.jianzhi2.day09;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 程海翔
 * @school 石家庄铁道大学
 */
public class Office027 {
}
//给定一个链表的 头节点 head ,请判断其是否为回文链表。
//
//如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。
class ListNode {
    int val;
    ListNode next;

    ListNode() {
    }

    ListNode(int val) {
        this.val = val;
    }

    ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}
//最简单方法是使用一个额外的可以访问下标的数据结构,然后复制比对
class Solution {
    public boolean isPalindrome(ListNode head) {
        List<Integer> temp=new ArrayList<>();

        ListNode cur=head;
        while (cur!=null){
            temp.add(cur.val);
            cur=cur.next;
        }

        int zhizhen1=0;
        int zhizhen2=temp.size()-1;
        while (zhizhen1<zhizhen2){
            if(!temp.get(zhizhen1).equals(temp.get(zhizhen2))){
                return false;
            }
            zhizhen1++;
            zhizhen2--;
        }
        return true;
    }
}
View Code
package com.chenghaixiang.jianzhi2.day09;

/**
 * @author 程海翔
 * @school 石家庄铁道大学
 */
public class Office028 {
}
class Node {
    public int val;
    public Node prev;
    public Node next;
    public Node child;
}
//多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。
//
//给定位于列表第一级的头节点,请扁平化列表,即将这样的多级双向链表展平成普通的双向链表,使所有结点出现在单级双链表中。
class Solution01 {
    public Node flatten(Node head) {
        dfs(head);
        return head;
    }
    Node dfs(Node node){
        Node cur=node;
        //// 记录链表的最后一个节点
        Node last=null;

        while (cur!=null){
            Node next=cur.next;
            //  如果有子节点,那么首先处理子节点
            if(cur.child!=null){
                Node childlast=dfs(cur.child);
                next=cur.next;

                //  将 node 与 child 相连
                cur.next=cur.child;
                cur.child.prev=cur;
                //  如果 next 不为空,就将 last 与 next 相连
                if(next!=null){
                    childlast.next=next;
                    next.prev=childlast;
                }
                // 将 child 置为空
                cur.child=null;
                last=childlast;
            }else {
                last=cur;
            }
            cur=cur.next;
        }
        return last;
    }
}
View Code

 

标签:总结,Node,ListNode,cur,val,next,链表,算法
From: https://www.cnblogs.com/chenghaixiang/p/16589964.html

相关文章

  • 每周总结7
    静态注册焦点失去事件 <head><metacharset="UTF-8"><title>Title</title><styletype="text/css">div{position:center;......
  • 算法:螺旋矩阵
    问题给你一个m行n列的矩阵matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。解决//采用宏观调度的方式//可以看作n层进行操作,每层从左上角、右下角的a......
  • 排序算法-冒泡、选择、堆、插入、归并、快速、希尔
    排序算法,默认是升序,左边的值是属于“小”值理解比较大小后的交换:当前元素cur和左边的元素cur-1,左边的比较大,就交换或者挪动array[cur]=array[cur-1];编码的区......
  • 算法: 超级洗衣机
    问题假设有n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。在每一步操作中,你可以选择任意m(1<=m<=n)台洗衣机,与此同时......
  • 前后端分离中跨域问题处理总结
      跨域问题出现是由于前端访问不同源的接口过程中,由于浏览器的同源策略。JS在访问后端后,后端能返回,但前端会接收到但是不能用。   一、同源代理:用后端模拟Htt......
  • 2022/8/15 总结
    题单贴贴A.Begin这是道结论题。但令人惊奇的是我完全没往这方面想用奇怪的策略做居然得到了\(\mathtt{80pts}\);Solution观察样例,再结合一点数学知识,我们可以知道......
  • 第七周Java总结
    上周忘记写了....补上....马上开学了,没有往后进行,接下来打算把java从零再看一遍java还是有自己特色的收拾心态准备好开学了这几周下来总体而言对于这个新的语言还不是......
  • Maven中的scope总结
    参考博客:(10条消息)Maven中的scope总结_野生开发者的博客-CSDN博客_mavenscopeMaven中的scope主要有以下6种,接下来分别介绍下这几种scope:1、compile不声明scope元素的......
  • docker总结
    在jenkins中创建pipeline,在配置中的流水线添加以下脚本   pipeline{    agentany    stages{        stage('buildtheimage'){      ......
  • 十大排序算法之【堆排序】
    堆排序代码://头文件省略voidheapify(vector<int>&in,intbottom,inttop){intlargest=top;intlson=top*2+1;intrson=top*2+1;if(lson......