算法奇妙屋(五十二)-备战+复习2

文章目录

一. 牛客 NC23 划分链表

1. 题目

题目意思已经很明确, 这里不过多赘述

2. 算法原理

  1. 定义六个变量:
    cur -> 表示遍历到原链表当前节点
    curNext -> 表示遍历到原链表下一个节点
    headMin -> 表示新的小于x链表的头结点
    headMax -> 表示新的大于等于x链表的头结点
    curMin -> 小于x链表的当前节点
    curMax -> 大于等于x链表的当前节点
  2. 通过赋值与修改 next 域, 来达到最终结果

3. 代码

java 复制代码
import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @param x int整型 
     * @return ListNode类
     */
    public ListNode partition (ListNode head, int x) {
        ListNode cur = head;
        ListNode headMin = new ListNode(-1);
        ListNode curMin = null;
        ListNode headMax = new ListNode(-1);
        ListNode curMax = null;
        while (cur != null) {
            ListNode curNext = cur.next;
            cur.next = null;
            if (cur.val < x) {
                if (curMin == null) {
                    curMin = cur;
                    headMin.next = curMin;
                }else {
                    curMin.next = cur;
                    curMin = curMin.next;
                }
            }else {
                if (curMax == null) {
                    curMax = cur;
                    headMax.next = curMax;
                }else {
                    curMax.next = cur;
                    curMax = curMax.next;
                }
            }
            cur = curNext;
        }
        if (curMin != null) {
            curMin.next = headMax.next;
            return headMin.next;
        }else {
            return headMax.next;
        }
    }
}

二. 牛客 NC18 顺时针旋转矩阵

1. 题目

2. 算法原理

这道题画图出来还是很好理解的

3. 代码

java 复制代码
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param mat int整型二维数组
     * @param n int整型
     * @return int整型二维数组
     */
    public int[][] rotateMatrix (int[][] mat, int n) {
        // 1.对调,获取翻转逆置矩阵
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < i; j++) {
                int t = mat[i][j];
                mat[i][j] = mat[j][i];
                mat[j][i] = t;
            }
        }
        // 2.对逆置矩阵进行每行逆置
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n / 2; j++) {
                int t = mat[i][j];
                mat[i][j] = mat[i][n - 1 - j];
                mat[i][n - 1 - j] = t;
            }
        }
        return mat;
    }
}
相关推荐
【JAVA】玩家5 小时前
Spring核心原理全解析:从零到生产实战
java·后端·spring
Wang's Blog6 小时前
Java框架 SpringCloud 快速入门: 实现 Feign 最佳实践(抽取方式)
java·spring cloud
一只小小的芙厨6 小时前
【线性DP】
学习·算法·动态规划
MandalaO_O7 小时前
IDEA 开发(快捷键 + 调试 + 序列化)
java·ide·intellij-idea
奋发向前wcx7 小时前
CSP-J复赛模拟赛5 王晨旭补题 2026.10.5
算法
xiaoqiMikko7 小时前
JVM 线上排查实战(七):jps 看不见它、jstack 连不上它,可它明明活得好好的
java·jvm
狼爷8 小时前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
念何架构之路8 小时前
zap扩展生态与总结
java·前端·数据库
罗湖老棍子8 小时前
C Looooops(信息学奥赛一本通- P1640)
算法·数论·同余·裴蜀定理·扩展欧几里得
第七页独白9 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库