分类: 算法训练

217 篇文章

剑指Offer:面试题09. 用两个栈实现队列
1.要点 使用java的同学请注意,如果你使用Stack的方式来做这道题,会造成速度较慢; 原因的话是Stack继承了Vector接口,而Vector底层是一个Object[]数组,那么就要考虑空间扩容和移位的问题了。 可以使用LinkedList来做Stack的容器,因为LinkedList实现了Deque接口,所以Stack能做的事Linked…
剑指Offer:面试题06.从尾到头打印链表
要点 场景是先进后出,栈或递归都可以 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 代码 package com.yuyy.algorithm; import java.util.Stack;…
剑指Offer:面试题05.替换空格
题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 要点 如果是直接从头查找,找到后替换,但是会挤到后面的元素,导致部分挪动,时间复杂度为O(n^2) 可以先计算替换后的…
LeetCode:1011.在D天内送达包裹的能力
题目 传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。 示例 1: 输入:weights = [1,2,3,4,5,6,7,8,9…
剑指Offer:面试题04. 二维数组中的查找
面试题04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, …
LeetCode:11. 盛最多水的容器
题目描述 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。 图中垂直线代表输入数组 [1,8,6,2…
LeetCode:1162. 地图分析
题目描述 你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。 我们这里说的距离是『曼哈顿距离』( Manhattan Distance):(x0, y0)…
LeetCode:892. 三维形体的表面积
题目描述 在 N * N 的网格上,我们放置一些 1 * 1 * 1  的立方体。 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。 示例 1: 输入:[[2]] 输出:10 示例 2: 输入:[[1,2],[3,4]] 输出:34 示例 3: 输入:[[1,0],[0,2]]…
最小生成树test1
#include <cstdio> #include <cstring> #define INF 1000000 //无穷大 #define MAXN 21 //顶点个数最大值 int n, m; //顶点个数、边数 int Edge[MAXN][MAXN]; //邻接矩阵 int lowcost[MAXN]; int nearvex[…
最小生成树test
#include<iostream> using namespace std; #define INF 100000 int sumweight=0; int arr[100][100]; int lowcost[100]; int nearvex[100]; int n,m; void f(int v0){ for(int i=0;i<…