首页 > 其他分享 >C语言双指针法

C语言双指针法

时间:2023-09-26 15:01:34浏览次数:47  
标签:result right int C语言 numbers numbersSize 指针 left

167. 两数之和 II - 输入有序数组 - 力扣(LeetCode)

 

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize){

    // 双指针法
    int left = 0;
    int right = numbersSize - 1;
    * returnSize = 2;
    int* result = (int*)malloc(numbersSize*sizeof(int));

    while (left < right){
        if (numbers[left] + numbers[right] == target){
            result[0] = left + 1;
            result[1] = right + 1;
            return result;
        }
        else if ( numbers[left] + numbers[right] >= target){
            right--;
        }
        else if (numbers[left] + numbers[right] <= target){
            left++;
        }
    }

    result[0] = -1;
    result[1] = -1;
    return result;

}

 

标签:result,right,int,C语言,numbers,numbersSize,指针,left
From: https://www.cnblogs.com/shunguo/p/17730091.html

相关文章

  • 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......
  • 访问空指针出panic
    panic信息:<4>[1670581299]15:Failedonwritei2cdev=23(I2CDEV_RFSW0)<4>[1670581299]15:txretryfailed<4>[1670581299]15:Failedonwritei2cdev=23(I2CDEV_RFSW0)<1>[1670595592]4:CPU4Unabletohandlekernelpagingrequestatvir......
  • 【C语言菜鸟知识】——动态内存管理
    --------------------------------------------------------------------------------------------------------------------- 1、栈在全局变量是分配在内存中的静态储存区,非静态的局部变量是分配在内存中的动态储存区,这个储存区就是栈的区域。2、堆在内存中允许建立内存动态分......