OD C卷 - 幼儿园篮球游戏

幼儿园篮球游戏

  • 有一个放倒的线性圆桶,可以从右边放入一个或者多个篮球,每个篮球有独立的编号;
  • 从右边和左边可以取出篮球,当只有一个篮球时,只能从左边取出;
  • 若依次放入1、2、3、4、5共五个编号的篮球,则可以依次取出1、2、3、4、5或者3、1、2、4、5;无法取出5 1 3 2 4编号的篮球;3 1 2 4 5 取出的场景为RLLLL,R表示右边取,L表示左边取;

输入描述:

第一行为依次放入的篮球编号;

第二行为依次取出的编号;
输出描述:

输出取的R/L序列;若无法取出,则输出No

示例1

输入:

4,5,6,7,0,1,2

6,4,0,1,2,5,7

输出:

RLRRRLL

示例2

输入:

4,5,6,7,0,1,2

6,0,5,1,2,4,7

输出:

No

示例3:

输入:

1,2,3,4

1,2,3,5

输出:

No
思路:

双指针

python 复制代码
nums = [int(x) for x in input().split(",")]
target_nums = [int(x) for x in input().split(",")]
 
arr = [float('inf') for i in range(300)]
 
left = 0
right = 0
target_pos = 0
 
result = ""
i=0
while(True):
    if(i>=len(nums)):
        break
    else :
        arr[right] = nums[i]
        right+=1
        while (True) :
            if(right <= left):
                break
            else :
                if (arr[left] == target_nums[target_pos]) :
                  result += "L"
                  left += 1
                  target_pos += 1
                  continue
                elif (arr[right-1] == target_nums[target_pos]) :
                  result += "R"
                  right -= 1
                  target_pos += 1
                  continue
                 
                break
    i+=1
 
if (left != right) :
  print("NO")
else :
  print(result)
 
相关推荐
AnFany9 天前
LeetCode【0016】最接近的三数之和
python·算法·leetcode·双指针·分治法
鸽鸽程序猿17 天前
【算法】【优选算法】双指针(下)
java·算法·双指针
no_play_no_games18 天前
洛谷P11243 繁花
c++·算法·双指针
鸽鸽程序猿18 天前
【算法】【优选算法】双指针(上)
java·算法·双指针
Jcqsunny1 个月前
[思维]最大矩阵
c++·算法·前缀和·矩阵·剪枝·双指针
一直学习永不止步1 个月前
LeetCode题练习与总结:拼接最大数--321
java·leetcode·贪心·数组··双指针·单调栈
Trouvaille ~1 个月前
【优选算法篇】双指针的华丽探戈:深入C++算法殿堂的优雅追寻
开发语言·c++·算法·leetcode·青少年编程·面试·双指针
Trouvaille ~1 个月前
【优选算法篇】双指针的优雅舞步:C++ 算法世界的浪漫探索
java·c++·算法·leetcode·青少年编程·面试·双指针
Themberfue1 个月前
基础算法之双指针--Java实现(下)--LeetCode题解:有效三角形的个数-查找总价格为目标值的两个商品-三数之和-四数之和
java·开发语言·学习·算法·leetcode·双指针
Mr Aokey2 个月前
盛最多水的容器
java·算法·双指针