
算法设计与分析
努力的猿猿
此人很勤快,什么都写了
展开
-
LeetCode240搜索二维矩阵II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { for(auto &row:matrix) { for(auto el原创 2021-05-16 08:43:00 · 89 阅读 · 0 评论 -
LeetCode215数组中的第K个最大元素
在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。class Solution {public: int findKthLargest(vector<int>& nums, int k) { sort(nums.begin(),nums.end()); reverse(nums.begin(),nums.end()); return nums[k-1];原创 2021-05-16 08:41:41 · 82 阅读 · 0 评论 -
LeetCode169多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于[n/2]的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。class Solution {public: int majorityElement(vector<int>& nums) { int n=nums.size(); map<int,int>count; for(int i=0;i<n;i++) { co原创 2021-05-16 08:40:17 · 105 阅读 · 0 评论 -
LeetCode31下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。class Solution {public: void nextPermutation(vector<int>& nums) { int i = nums.size() - 2; while (i >= 0 && n原创 2021-05-16 08:38:51 · 88 阅读 · 0 评论 -
LeetCode4寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数 。class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int m=nums1.size(),n=nums2.size(); vector<int>原创 2021-05-16 08:37:19 · 77 阅读 · 0 评论 -
JZ50数组中重复的数字
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。存在不合法的输入的话输出-1。class Solution {public: int duplicate(vector<int>& numbers) { int i=0; int n=numbers.size(); int*repeat=new int[numbe原创 2021-05-09 20:53:02 · 92 阅读 · 0 评论 -
JZ35数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007class Solution {public: int InversePairs(vector<int> data) { long long P=0; for(int i=0;i<data.size()-1;i++) for原创 2021-05-09 20:51:54 · 107 阅读 · 0 评论 -
JZ13调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。class Solution {public: vector<int> reOrderArray(vector<int>& array) { vector<int> new_array; for(int i=0;i<array.size();i++)原创 2021-05-09 20:50:43 · 90 阅读 · 0 评论 -
JZ7斐波那契数列
对于斐波那契数列,要求输入一个整数n(n<=39),输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。class Solution {public: int Fibonacci(int n) { int a[40]={0,1}; for(int i=2;i<40;i++) { a[i]=a[i-1]+a[i-2]; } if(n<=39)原创 2021-04-25 08:50:30 · 134 阅读 · 0 评论 -
JZ28数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { int n=numbers.size(); int *count_array=new int[n]; for(int i=0;i<n;i++) { count_array[numbers[i]]++; i原创 2021-05-09 20:47:43 · 118 阅读 · 0 评论 -
JZ1二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。#ifndef _JZ1_#define _JZ1_#include<vector>using namespace std; class Solution {public: bool Find(int target, vector<vector<int> >原创 2021-04-21 18:33:27 · 92 阅读 · 0 评论