mirror of
				https://gitlab.com/game-loader/hugo.git
				synced 2025-10-31 15:18:49 +08:00 
			
		
		
		
	leetcode update
This commit is contained in:
		| @ -15634,3 +15634,44 @@ public: | |||||||
|     } |     } | ||||||
| }; | }; | ||||||
| ``` | ``` | ||||||
|  | ## day231 2024-10-15 | ||||||
|  | ### 2938. Separate Black and White Balls  | ||||||
|  | There are n balls on a table, each ball has a color black or white. | ||||||
|  |  | ||||||
|  | You are given a 0-indexed binary string s of length n, where 1 and 0 represent black and white balls, respectively. | ||||||
|  |  | ||||||
|  | In each step, you can choose two adjacent balls and swap them. | ||||||
|  |  | ||||||
|  | Return the minimum number of steps to group all the black balls to the right and all the white balls to the left.  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### 题解 | ||||||
|  | 本题起初想到可以遍历一遍数组统计0的个数,再遍历数组将前面的1和后面的0交换直到到达0的个数的位置。但这样好像麻烦了一些,统计0的个数其实没有必要,直接使用双指针,分别从首尾开始遍历数组,尾指针遇到的0和首指针遇到的1交换,直到两个指针相遇即可。原因在于尾指针每次遇到0就将其和1交换,则尾指针指向位置之后的数组可以确保是全1的,同理首指针之前的数组可以确保是全0的。二者相遇时相遇位置之后的数组为全1,之前的为全0,就已经满足题目条件了。 | ||||||
|  |  | ||||||
|  | 遍历过程中,尾指针遇到0停下,移动首指针直到遇到1,计算二者距离并加和到结果中,继续移动尾指针直到头尾相遇结束。 | ||||||
|  |  | ||||||
|  | ### 代码 | ||||||
|  | ```cpp  | ||||||
|  | class Solution { | ||||||
|  | public: | ||||||
|  |     long long minimumSteps(string s) { | ||||||
|  |         long long int head = 0; | ||||||
|  |         long long int tail = s.size()-1; | ||||||
|  |         long long int result = 0; | ||||||
|  |         while (tail > head){ | ||||||
|  |             while(s[tail] != '0' && tail > head){ | ||||||
|  |                 tail--; | ||||||
|  |             } | ||||||
|  |             while(s[head] != '1' && head < tail){ | ||||||
|  |                 head++; | ||||||
|  |             } | ||||||
|  |             result += tail-head; | ||||||
|  |             tail--; | ||||||
|  |             head++; | ||||||
|  |         } | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 gameloader
					gameloader