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)
 
相关推荐
DogDaoDao5 天前
leetcode 面试经典 150 题:长度最小的子数组
算法·leetcode·面试·双指针·滑动窗口·数据结构与算法·子数组
DogDaoDao12 天前
leetcode 面试经典 150 题:移除元素
算法·leetcode·面试·数组·双指针·快慢指针·数据结构与算法
硕风和炜13 天前
【LeetCode: 160. 相交链表 + 链表】
java·算法·leetcode·链表·面试·双指针
呼啦啦啦啦啦啦啦啦1 个月前
刷题日常(移动零,盛最多水的容器,三数之和,无重复字符的最长子串)
算法·双指针·滑动窗口
AnFany1 个月前
LeetCode【0016】最接近的三数之和
python·算法·leetcode·双指针·分治法
鸽鸽程序猿2 个月前
【算法】【优选算法】双指针(下)
java·算法·双指针
no_play_no_games2 个月前
洛谷P11243 繁花
c++·算法·双指针
鸽鸽程序猿2 个月前
【算法】【优选算法】双指针(上)
java·算法·双指针
Jcqsunny2 个月前
[思维]最大矩阵
c++·算法·前缀和·矩阵·剪枝·双指针
一直学习永不止步2 个月前
LeetCode题练习与总结:拼接最大数--321
java·leetcode·贪心·数组··双指针·单调栈