首页 > 其他分享 >C语言双指针法解决-有序数组的平方

C语言双指针法解决-有序数组的平方

时间:2023-09-26 17:45:27浏览次数:35  
标签:numsSize 平方 right nums int newList C语言 left 指针

 

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */


int cmp(const void * a, const void * b){
    return (*(int*)a) - (*(int*)b);
}



int* sortedSquares(int* nums, int numsSize, int* returnSize){

    // 使用双指针法

    int left = 0;
    int right = numsSize - 1;

    int* newList = (int*)malloc(numsSize*sizeof(int));

    int k = numsSize - 1;

    while (k>=0){
        if (nums[left]*nums[left] > nums[right] * nums[right]){
            newList[k] = nums[left]*nums[left];
            left++;
        }
        else{
            newList[k] = nums[right]*nums[right];
            right--;
        }
        k--;
    }

    * returnSize = numsSize;
    return newList;


}

 

标签:numsSize,平方,right,nums,int,newList,C语言,left,指针
From: https://www.cnblogs.com/shunguo/p/17730788.html

相关文章

  • C语言char类型
      #include<stdio.h>intmain(){char*s="hello";//字符串名字就是首地址printf("%x\n",s);//s是char指针,size=4or8printf("sizeofsis%d\n",sizeof(s));//解引用第一个地址得到的是h......
  • C语言双指针法
    167.两数之和II-输入有序数组-力扣(LeetCode) /***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/int*twoSum(int*numbers,intnumbersSize,inttarget,int*returnSize){//双指针法intleft=0;intright=nu......
  • C++虚函数剖析-从二级指针角度
    tags:C++categories:C++写在前面一直说C++的多态,其实底层原理是虚函数支持,那么虚函数的底层原理呢,之前一直停留在表面,直到后来看了很多书籍/视频/博客文章,才有了一点深刻的理解,下面来具体看看如何通过C指针进行虚函数的调用,相当于对C指针的一个复习,同时也......
  • 使用Optional优雅避免空指针异常
    本文已收录至GitHub,推荐阅读......
  • 力扣16.最接近的三数之和(双指针)
    给你一个长度为 n 的整数数组 nums 和一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。 示例1:输入:nums=[-1,2,1,-4],target=1输出:2解释:与target最接近的和是2(-1+2+......
  • 学习C语言的第十一天
    写一个函数,实现一个整形有序数组的二分查找#include<stdio.h>intBinary(intarr[],intk)//这里的arr本质上是个指针{ intsz=sizeof(arr)/sizeof(arr[0]);//由于上面的是指针,所以这里sz计算的是指针的大小,在win32系统下是4,而arr[0]是一个整形的大小,也是4,所以sz=4/4......
  • C语言的发展及特点
    C语言的发展历程C语言作为计算机编程领域的重要里程碑,其发展历程承载着无数开发者的智慧和创新。C语言诞生于20世纪70年代初,由计算机科学家DennisRitchie在贝尔实验室首次推出。当时,Ritchie的目标是为Unix操作系统开发一门能够更方便地进行系统编程的语言。事实证明,C语言不仅在Un......
  • C语言统计数组里面各个元素出现的次数
    #include<iostream>#include<stdio.h>intmain(){intnums[]={1,1,2,2,3,4,5,6,6};intsize=sizeof(nums)/sizeof(nums[0]);//创建一个全0的空数组int*counterNums=(int*)calloc(size,sizeof(int));for(inti=......
  • 初阶指针详解
    (目录)1.内存和地址内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的所以为了有效的使用内存,就把内存划分成一个个小块,这每一个小块被称为内存单元,每个内存单元的大小是1个字节为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该......
  • 基础双指针算法:单队列、双队列
    1、单队列输入一串字符串,字符串有多个由单个逗号隔开的单词,任务是需要把单词间隔开,每个单词换行输出。输入样例abcdefghi输出样例abcdefghi#include<iostream>usingnamespacestd;constintN=1010;intmain(){charstr[N];#definegets(str)gets_s(str......