Re: [闲聊] 每日leetcode

楼主: devilkool (对猫毛过敏的猫控)   2024-11-07 01:59:40
3011. Find if Array Can Be Sorted
偷看hint才会写,假如相邻两数字二进制的1的数量不一样
前面又比后面大的话就是false,1的数量一样的话就找出这一组最大的值跟下一组做比较
public bool CanSortArray(int[] nums)
{
if (nums.Length == 1)
{
return true;
}
var currentSetbitsCount = Convert.ToString(nums[0],2).Count(c => c ==
'1');
var currentMax = nums[0];
var currentMin = nums[0];
var lastMax = int.MinValue;
for (int i=1;i<nums.Length;i++)
{
var setbitsCount = Convert.ToString(nums[i],2).Count(c => c ==
'1');
if (setbitsCount != currentSetbitsCount)
{
if (lastMax > currentMin)
{
return false;
}
lastMax = currentMax;
currentMin = nums[i];
currentMax = nums[i];
currentSetbitsCount = setbitsCount;
}
else
{
currentMax = Math.Max(nums[i], currentMax);
currentMin = Math.Min(nums[i], currentMin);
}
}
return currentMin > lastMax;
}

Links booklink

Contact Us: admin [ a t ] ucptt.com