- 博客(9)
- 收藏
- 关注
原创 LeetCode78-子集
题目:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。示例:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]方法一:枚举class Solution {public: vector<int> t; vector<vector<int>> ans; vector&
2022-04-15 15:55:13
830
转载 寻找两个正序数组的中位数
题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。主要思路:要找到第 k (k>1) 小的元素,那么就取 pivot1 = nums1[k/2-1] 和 pivot2 = nums2[k/2-1] 进行比较nums1 中小于等于 pivot1 的元素有 nums1[0 … k/2-2] 共计 k/2-1 个nums2 中小于等于 pivot2 的元素有 nu
2022-04-12 11:23:08
126
原创 数组排序之后相邻数的最大差值
描述给定一个整形数组arr,返回排序后相邻两数的最大差值arr = [9, 3, 1, 10]。如果排序,结果为[1, 3, 9, 10],9和3的差为最大差值,故返回6。arr = [5, 5, 5, 5]。返回0。[要求] 时间复杂度为O(n),空间复杂度为O(n)解题思路:如果直接对数组进行sort排序在遍历查找其时间复杂度达到O(nlogn);桶排序1)可将整个数组分为N个区间,假设arr数组最大值为Max,最小值为Min,则各子区间大小为(Max-Min)/N2)遍历整个arr数
2022-03-31 21:44:11
1359
原创 CD39 数组中未出现的最小正整数
描述给定一个无序数组arr,找到数组中未出现的最小正整数例如arr = [-1, 2, 3, 4]。返回1arr = [1, 2, 3, 4]。返回5[要求] 时间复杂度为O(n),空间复杂度为O(1)解题思路1:将无序数组arr排序,从头到尾遍历数组,当数组元素arr[i]不等于下标+1时即为未出现的最小正整数#include<bits/stdc++.h>using namespace std;int main(){ int N; cin>>N;
2022-03-16 10:11:28
535
1
原创 序列化与反序列化二叉树
描述:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例1:输入:root = [1,2,3,null,null,4,5]输出:[1,2,3,null,null,4,5]思路:深度优先搜索
2022-03-14 14:33:40
817
原创 CD29 信封嵌套问题
描述给n个信封的长度和宽度。如果信封A的长和宽都小于信封B,那么信封A可以放到信封B里,请求出信封最多可以嵌套多少层。说明:不允许旋转信封。输入描述:输出包含多行,第一行包括一个整数,代表信封的个数n。接下来n行,每行两个整数和,代表信封的长度和宽度。输出描述:输出包括一行,代表信封最多嵌套多少层。思路:考虑固定一个维度,再在另一个维度上进行选择。先对宽度进行升序排序,如果遇到相同的情况,则按照高度降序排序。为什么高度采用降序排序?主要是因为当相同时,如果不规定的排序方式,.
2022-03-12 11:37:10
704
原创 设计有setAll功能的哈希表
描述:哈希表常见的三个操作时put、get和containsKey,而且这三个操作的时间复杂度为O(1)。现在想加一个setAll功能,就是把所有记录value都设成统一的值。请设计并实现这种有setAll功能的哈希表,并且put、get、containsKey和setAll四个操作的时间复杂度都为O(1)。输入描述:第一行一个整数N表示操作数。接下来N行,每行第一个数字opt代表操作类型若opt=1,接下来有两个整数x, y表示设置key=x对应的value=y若opt=2,接下来一个整数x,
2022-03-11 21:47:36
436
原创 CD22 用栈来求解汉诺塔问题
描述汉诺塔问题比较经典,这里修改一下游戏规则:现在限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间。求当塔有n层的时候,打印最优移动过程和最优移动总步数。输入描述:输入一个数n,表示塔层数输出描述:按样例格式输出最优移动过程和最优移动总步数示例1输入:2复制输出:Move 1 from left to midMove 1 from mid to rightMove 2 from left to midMove 1 from right to
2022-03-03 09:59:38
399
原创 #ifndef的用法
#ifndef是"if not defined"的简写,是宏定义的一种,是预处理功能中三种(宏定义,文件包含和条件编译)中的第三种——条件编译。作用:主要用于防止头文件的重复包含和编译。#ifndef 标识1 //判断"标识1"是否定义,如果被定义则返回假,如果没有被定义则返回真。语句1 #ifndef 标识1语句2 #define 标识1语句3 #endif语句4 ……语句5 ……该段代码意思是:如果标识1没有被定义,则重定义标识1,即执行语句2、语句3;如果标识1已经被定义,则直接跳过
2022-03-02 22:21:12
3140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人