【面试题】有一个数组,每隔两个数删掉一个数,到末尾又循环到开头继续进行,求最后一个被删除的数的原始下标位置

这是一道面试中的编程题目,要求处理一个数组,每隔两个元素删除一个,从头到尾循环此过程,直至数组只剩一个元素。例如,数组{0, 1, 2, 3, 4, 5, 6, 7}经过删除操作后,最后被删除的数的原始下标是3。" 45642659,1314309,自定义结构体在STL容器中的应用,"['C++', '数据结构', 'STL', '容器']
摘要由CSDN通过智能技术生成

面试碰到的一道编程题,当时没有细想去做

有一个数组a[1000],要求每隔两个数删掉一个数,到末尾则又循环到开头继续进行,求最后一个被删掉的数的原始下标位置

例如,一个数组:{0, 1, 2, 3, 4, 5, 6, 7}

  • 0->1->2(第一遍,删除)->3->4->5(第一遍,删除)->6->7->
  • 0(第二遍,删除)->1->2(已删除)->3->4(第二遍,删除)->5(已删除)->6->7 …
  • 循环直到数组中最后一个元素被删除
#define ARRAY_SIZE_MAX  1000
#define DEL_ARRAY_FLAG   1
#define DEL_GAP_VALUE	2
/*	获取当前数组可用的下标值
* array: 需要操作的数组名
* idx:数组下标值,由于其值需要被改变,所以使用指针传递
*/
static void get_index(int *array, int *idx)
{
      
    int tmp = *idx;	//继承当前数组下标
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值