文章目录

  • 解析
  • 代码

解析

temp数组:
用于记录字符串colors中字符的状态
二维数组p:
存放两个指针*p, *(p+1)分别存放两选手当前在字符串中搜索的起始位置

代码

//colors 字符串
//temp 字符删除情况
//l 字符串长度
//c 需搜索字符
//p 搜索起始位置
//搜索成功返回index, 否则返回-1
int Find(char *colors,int *temp,int l,char c,int *p){int ret=-1, t, left, right;//ret 返回值//t 左右相邻下标//left 1左邻c; 0左邻非c//righ 1右邻c; 0右邻非cfor(int i=*p;i<l;i++){//搜寻left=0;right=0;if(temp[i]==1 && colors[i]==c){//若i位置字符未被删除并且为ct=i;for(int j=i-1;j>=0;j--){//左1搜索if(temp[j]==1){t=j;break;}}if(t!=i && colors[t]==c) left=1;t=i;for(int j=i+1;j<l;j++){//右1搜索if(temp[j]==1){t=j;break;}}if(t!=i && colors[t]==c) right=1;}if(left==1 && right==1){ret=i;break;}}return ret;
}bool winnerOfGame(char * colors){int l=strlen(colors);if(l<3) return false;int *temp=(int*)malloc(sizeof(int)*l);for(int i=0;i<l;i++){*(temp+i)=1;}//l 字符串长度//temp 记录字符删除情况char str[2]={'A','B'};int turn=0, flag=-1, Index;int p[2][1];**p=0;**(p+1)=0;//str AB数组//turn 0:Alice轮次; 1:Bob轮次//flag 0:Alice胜; 1:Bob胜//接收Find搜寻位置//p0 指向Alice已经搜索到的位置//p1 指向Bob已经搜索到的位置while(1){Index=Find(colors, temp, l, str[turn], *(p+turn));if(Index!=-1){**(p+turn)=Index+1;turn=1-turn;}else{flag=1-turn;break;}  }return flag==0;
}

Leetcode题库 2038.邻色同删(双指针法 C实现)相关推荐

  1. LeetCode题库第867题 转置矩阵

    LeetCode题库第867题 转置矩阵 LeetCode题库第867题 转置矩阵 我首先想到的方法是新建一个二维的矩阵,然后遍历原来的矩阵,将每一个元素放在新矩阵中该放的位置: // javapub ...

  2. LeetCode题库第888题 公平的糖果棒交换

    LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...

  3. LeetCode题库第2题 两数相加

    两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...

  4. LeetCode题库第1题 两数之和

    两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...

  5. LeetCode题库整理【Java】—— 3 无重复字符的最长子串

    LeetCode题库整理[Java] ## 3 无重复字符的最长子串 题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...

  6. LeetCode题库整理【Java】—— 2 两数相加

    LeetCode题库整理[Java] 2.两数相加 题目:给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果, ...

  7. LeetCode题库整理【Java】—— 7整数反转

    LeetCode题库整理[Java] 7.整数反转 题目:给出一个32位的有符号整数,你需要将这个这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例2: 输入: -123 ...

  8. LeetCode题库整理【Java】—— 1两数之和

    LeetCode题库整理[Java] 1.两数之和 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nu ...

  9. leetcode题库:4.两个排序数组的中位数

    题目: /**   *leetcode题库:4. 求两个排序数组的中位数  *  *  给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 .  *  请找出这两个有序数组的中位数. ...

最新文章

  1. Hyper-V虚拟化测试05防火墙及证书配置
  2. phpmyadmin登录报错crypt_random_string requires at least one symmetric cipher be loaded 解决方法
  3. LVS技术浅析-proc参数
  4. 如何确定CPU是大端字节序还是小端字节序?
  5. 最详细的使用 soapui 消费 SAP Cloud for Customer Web service 的教程
  6. [原]第一次遭遇Oracle的Bug,纪念一下 |ORA-00600 kmgs_pre_process_request_6|
  7. 杯子 + Kronican
  8. 二叉树前序中序后续线索树_二叉树的先序,中序,后序遍历以及线索二叉树的遍历...
  9. 滴水课后作业(1-5)
  10. php查询字段前30个字符,php/json我的字段名被截断为30个字符。我能停下来吗?
  11. 表格中点击获得行列的值、刷新页面
  12. ogg启动报错libnnz11.so: cannot open shared object file
  13. C++11新特性——auto和decltype
  14. JAVA小项目--商品管理系统
  15. 遗传算法求解立体仓库货位优化
  16. bigdecimal如何做除法_bigdecimal类型除法问题
  17. 【Unity问题】Int类型除法运算为什么归零
  18. win10编译 Fast R-CNN 所需的setup.py(rotate) tensorflow版
  19. Java业务系统是怎么和MySQL交互的?
  20. 毕业后的去向:继续读研还是直接就业?

热门文章

  1. hdu1257(最少拦截系统 )
  2. Segment fault之痛
  3. UML轻松入门--类和对象
  4. 将*.STL转换成顶点索引格式
  5. xss_url通关_1-10
  6. [Python人工智能] 七.什么是过拟合及dropout解决神经网络中的过拟合问题
  7. HarmonyOS之深入解析视频的功能和使用
  8. HarmonyOS之常用组件Text的功能和使用
  9. 下列关于物理层设备的叙述中,错误的是( )
  10. 167. Two Sum II - Input array is sorted 两数之和 II - 输入有序数组