首页 > TAG信息列表 > numsSize

移动零

题目: 一.交换 void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } void moveZeroes(int* nums,int numsSize) { if (numsSize == 1&&numsSize==0&&nums==null) return; for (int i = 0; i < numsSize; i++) {

[Leetcode 189]轮转数组

Leetocde189 轮转数组 这题能被用做mid题是因为一题多解,其中基于双指针的轮状数组解法是比较难的 1. 使用新数组 __直接把第i个元素移到第(i+k)%numsize位置,类似循环队列 void rotate(int* nums, int numsSize, int k) { int newArr[numsSize]; for (int i = 0; i < numsSiz

【C语言】数组和字符串

1. 数组简介 集合、列表、数组概念之间的差别 数组的操作 练习:寻找数组的中心索引 点击查看代码 int pivotIndex(int* nums, int numsSize){ int total = 0, leftNum = 0; for(int i=0; i<numsSize;i++){ total += nums[i]; } for(int i=0; i<numsSi

15. 三数之和

15. 三数之和 难度中等4597 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。   示例 1: 输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]

只出现一次的数字 leetcode 刷题篇

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?   int singleNumber(int* nums, int numsSize){ int n = 0; while(numsSize--){

leetcode_645. 错误的集合

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代表了集合 S 发生错误后的结果。 请你找出重复出现的整数,再找到丢失的整数,将它们以数组的

leetcode_503. 下一个更大元素 II

给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1 

素数埃氏筛 C语言

#include <stdio.h> #include <stdlib.h> /* 首先将2到n范围内的整数写下来,其中2是最小的素数。 所以2的倍数一定是合数,将表中所有的2的倍数划去。 剩下的数里最小的数也是质数,以此类推划掉该质数的倍数。 划完全部的数,剩下的就是质数。 时间复杂度是O(nloglogn)。 */ voi

排序——有多少小于当前数字的数字

一、题目描述 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 以数组形式返回答案。 二、C语言代码 /** * Note: The returned arra

力扣LeetCode经典算法 调整数组顺序使奇数位于偶数前面

数据结构(五十六) 学习数据结构与算法过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。 —— 调整数组顺序使奇数位于偶数前面 —— 1.题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的

删除有序数组中的重复项

一,具体思路 利用双指针方法解决; 申请两个变量,p=0,q=1; p指向第一个数,q指向第二个数; 当p指向的数等于q指向的数,q++; 当p指向的数不等于q指向的数 令q指向的数=p+1;此时p++,q++; 循环直到p<数组长度   二,代码实现   int removeDuplicates(int* nums, int numsSize){ if(n

LC-453-最小操作使数组元素相等

问题描述: 给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。 解决思路: 正向思维:每次给n-1个数组元素进行+1操作 反向思维:每次给1个数组元素进行-1操作 先将数组从小到达进行排序,前面的大数减去小数,就是当前最小要操作

力扣 35.搜索插入位置

1.题目描述 2.思路讲解 看到了时间复杂度要求,一股很浓的二分算法味儿就来了 如果只是简单的搜索返回位置,那么题目就没啥意思了,唯一难点就是怎么返回要插入的位置 插入位置肯定是前面小于目标值,后面大于目标值,用这个作为条件,返回我们位置 当然这个算法没法保证第一个位置及0,和

day 1

存在重复元素 1)思路: 首先利用排序算法把输入数组排序,再将有序的数组遍历,比较相邻两个是否相等。 2)代码: int compFunc(void* p,void* q){ int* node_1 = (int*)p; int* node_2 = (int*)q; return (*node_1-*node_2);//快排node } bool containsDuplicate(int* nums

【Leetcode数据结构算法题】轮转数组(顺序表篇)

题目内容: 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 leetcode题目链接(点击即可跳转) 思路分析 看完题目后,我们首先要做的就是理解题目的含义,也就是审题。从不同维度,不同角度的去设问题并主动回答这些问题。题目中出现了一个我们比较陌生的词语“轮转

轮转数组(C语言)

文章目录 思路正确但不实际的解法解法一解法二 【题目描述】 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 题目来源(力扣):轮转数组 示例1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 示例2: 输入:nums = [-1,-100,3,99], k = 2 输

诺亚方舟——第六天

第六天!!!! ———————————————————————————————————————— 学习内容:贪心算法 贪心算法的定义:不追求整体的最优,力求部部最优,这就是贪心 ———————————————————————————————————————— 课后习题: 1.力

169. Majority Element(多元素)———附带思路和完整代码

文章目录 0 效果1 题目2 思路3 代码 0 效果 1 题目 2 思路 个数最多的元素一定在容器的中间位置。 3 代码 class Solution { public: int majorityElement(vector<int>& nums) { std::sort(nums.begin(), nums.end()); return nums[nums.size()/2]

【题解】《算法零基础100讲》(第41讲) C语言 排序 API

文章目录 一. 排序API二. 推荐专栏三. 相关练习3.1 排序数组3.2 多数元素3.3 存在重复元素3.4 最大间距3.5 按奇偶排序数组 一. 排序API   排序API就是是同C语言内置的函数qsort进行排序。 qsort的定义方式: void qsort (void* base, size_t num, size_t size,

力扣:搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请使用时间复杂度为 O(log n) 的算法。 int searchInsert(int* nums, int numsSize, int target){ int i; for(i=0;i<numsSize;i++) {

[解题报告]《算法零基础100讲》(第33讲) 排序入门 - 冒泡排序

目录 零、写在前面 一、主要知识点         1.选择排序 二、课后习题  611. 有效三角形的个数 769. 最多能完成排序的块 写在最后 零、写在前面         今天是打卡的第34天,今天的难度还行,赶紧写写复习考试了-.-知识点在: 《算法零基础100讲》(第34讲) 排序入门 -

【跟着英雄哥学算法】 线性枚举 -- 最值算法

                        n个数的最小值        代码如下 int Min(int a, int b) { // 定义函数 return a < b ? a : b; } int findMin(int* nums, int numsSize){ int i; int min = 100000001; // (2)如果定义最

[解题报告]《算法零基础100讲》(第17讲) 线性枚举(一) - 最值算法(1)(2)

习题一 1.题目   力扣https://leetcode-cn.com/problems/max-consecutive-ones/ 2、解题 思路:没什么好说的,有1就+1,连续就继续+,不连续就归零重新开始,把ans存在Maxans int findMaxConsecutiveOnes(int* nums, int numsSize)//int*nums给的数组,int numsSize数组长度 { int an

【力扣】 - 53. 最大子序和

最大子序和 1. 暴力法 时间复杂度:O(N^2)空间复杂度:O(1) 设置两层for循环存储第一个数字的值,依次加上后面的数字,只存储最大值依此类推 class Solution { public: int maxSubArray(vector<int> &nums) { int max = INT_MIN; int numsSize = int(nums

算法入门C——35. 搜索插入位置

LeetCode刷题——算法学习计划(入门部分) 文章目录 题目描述思路介绍我的第一次正确提交官方版本 题目描述 思路介绍 由于本人学算法只是为了巩固C语言基础,所以就不会去深挖算法之根本 算法:二分法查找适用于数据量较大时,但是数据需要先排好顺序。主要思想是:(设查找