1PHAN's blog

标签 · 算法

首页

关于

归档

loading..
java算法

图解算法数据结构之树

彩灯装饰记录 I一棵圣诞树记作根节点为 root 的二叉树,节点值为该位置装饰彩灯的颜色编号。请按照从 左 到 右 的顺序返回每一层彩灯编号。 ==其实说是最基础的BFS== import java.util.LinkedList; import java.util.Queue; /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int..

更多
loading..
java算法

图解算法数据结构之栈与队列

图书整理读者来到图书馆排队借还书,图书管理员使用两个书车来完成整理借还书的任务。书车中的书从下往上叠加存放,图书管理员每次只能拿取书车顶部的书。排队的读者会有两种操作: push(bookID):把借阅的书籍还到图书馆。pop():从图书馆中借出书籍。为了保持图书的顺序,图书管理员每次取出供读者借阅的书籍是 最早 归还到图书馆的书籍。你需要返回 每次读者借出书的值 。 如果没有归还的书可以取出,返回 -1 。 示例 1: 输入:[“BookQueue”, “push”, “push”, “pop”][[], [1], [2], []]输出:[null,null,null,1]解释:MyQueue myQueue = new MyQueue();myQueue.push(1); // queue is: [1..

更多
loading..
java算法

图解算法数据结构之字符串

路径加密 class Solution { public String pathEncryption(String path) { StringBuilder b = new StringBuilder(); for(char c : path.toCharArray()){ if(c == '.') b.append(' '); else b.append(c); } return b.toString(); } } 字符串单词翻转 import java.util.*; class Solution { public String reverseMessage(Str..

更多
loading..
java算法

数组相关练习

数组调整教练使用整数数组 actions 记录一系列核心肌群训练项目编号。为增强训练趣味性,需要将所有奇数编号训练项目调整至偶数编号训练项目之前。请将调整后的训练项目编号以 数组 形式返回。 也就是说奇数均放到偶数后面 简单想法使用List,来一个奇数add一个,最后再搞偶数就彳亍。 class Solution { public int[] trainingPlan(int[] actions) { List<Integer> li = new ArrayList<>(); for(int i = 0; i < actions.length; i++){ if(actions[i] % 2 == 1){ ..

更多
loading..
java算法

链表相关练习汇总

来源为:LeetCode图解算法数据结构 图书整理 I书店店员有一张链表形式的书单,每个节点代表一本书,节点中的值表示书的编号。为更方便整理书架,店员需要将书单倒过来排列,就可以从最后一本书开始整理,逐一将书放回到书架上。请倒序返回这个书单链表。 示例 1: 输入:head = [3,6,4,1] 输出:[1,4,6,3] 提示: 0 <= 链表长度 <= 10000 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val ..

更多
算法

2022ICPC济南部分题解

Towerhttps://www.luogu.com.cn/problem/list?keyword=icpc2022jinan&type=AT%7CB%7CCF%7CP%7CSP%7CUVA&page=1 #include <iostream> #include <vector> #include <cstdio> #include <algorithm> #define endl "\n" #define int long long using namespace std; const int N = 5005; int n,m; int a[N],ans[N],cha[N]; int T; void solve() { cin..

更多
算法

P1006 [NOIP2008 提高组] 传纸条

[NOIP2008 提高组] 传纸条题目描述小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排坐成一个 $m$ 行 $n$ 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标 $(1,1)$,小轩坐在矩阵的右下角,坐标 $(m,n)$。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。 在活动进行中,小渊希望给小轩传递一张纸条,同时希望小轩给他回复。班里每个同学都可以帮他们传递,但只会帮他们一次,也就是说如果此人在小渊递给小轩纸条的时候帮忙,那么在小轩递给小渊的时候就不会再帮忙。反之亦然。 还有一件事情需要..

更多
loading..
算法

P1004 [NOIP2000 提高组] 方格取数解析

[NOIP2000 提高组] 方格取数题目描述设有 $N \times N$ 的方格图 $(N \le 9)$,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 $0$。如下图所示(见样例): 某人从图的左上角的 $A$ 点出发,可以向下行走,也可以向右走,直到到达右下角的 $B$ 点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字 $0$)。此人从 $A$ 点到 $B$ 点共走两次,试找出 $2$ 条这样的路径,使得取得的数之和为最大。 输入格式输入的第一行为一个整数 $N$(表示 $N \times N$ 的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独的 $0$ 表示输入结束。 输出格式只需输出一个整数,表示 $2$ 条路径上取得的最大..

更多
loading..
算法

P1002 [NOIP2002 普及组] 过河卒解析

[NOIP2002 普及组] 过河卒题目描述棋盘上 $A$ 点有一个过河卒,需要走到目标 $B$ 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 $C$ 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,$A$ 点 $(0, 0)$、$B$ 点 $(n, m)$,同样马的位置坐标是需要给出的。 现在要求你计算出卒从 $A$ 点能够到达 $B$ 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。 输入格式一行四个正整数,分别表示 $B$ 点坐标和马的坐标。 输出格式一个整数,表示所有的路径条数。 样例 #1样例输入 #16 6 3 3 样例输出 #16 提示对于 $100 %$ 的数据,$1 \le n, m \le ..

更多