记录自己的LeetCode之day2(双指针2)
仍然是双指针,发现在知道大致指导思路的情况下很容易直接往那方面想,暂且还是对自己多一些自信 今天的题目是 633 平方数之和 , 345 反转字符串中的元音字母 首先看 633 平方数之和 要找到两个数,明显是二维搜索问题,二维搜索的边界是这道题的重点,通过观察不难发现边界其实是有约束的,实际上,边界是一个半径为 c \sqrt{c} c 的半圆。但是利用双指针进行搜索时,我们不用考虑那么多,因为并不会像暴力搜索那样搜索整个区域。 整个算法的流程和普通双指针法基本相似,不再赘述 python代码为 import math class Solution : def judgeSquareSum ( self , c : int ) - > bool : N = int ( math . sqrt ( c ) ) i = 0 j = N while i <= j : sum = i * i + j * j if sum == c : return True elif sum < c : i = i + 1 else : j = j - 1 return False 接下来看 345 反转字符串中的元音字母 这题做的真是惨不忍睹,一开始我是这么想的(贼朴实) 从最左和最右插两个指针i和j,判断四种情况: 若i元音,j元音,交换i,j处的字符,i++ j- - 若i元音,j辅音,j-