第一个做法是先建立一个1~n的列表arr,还有一个增量 dp,每次遍历arr碰到符合条件的就将其从arr中删除,计算器减一,每循环一次,dp就加一,时间复杂度最坏为O(m*n)
第二个做法是使用单调栈,时间复杂度最好为O(n)
单调栈就是一个由小到大的有序的,遍历时会将新元素放到合适位置,不该在栈中的会被挤出去,仅需遍历一遍range(n)
第一个做法是先建立一个1~n的列表arr,还有一个增量 dp,每次遍历arr碰到符合条件的就将其从arr中删除,计算器减一,每循环一次,dp就加一,时间复杂度最坏为O(m*n)
第二个做法是使用单调栈,时间复杂度最好为O(n)
单调栈就是一个由小到大的有序的,遍历时会将新元素放到合适位置,不该在栈中的会被挤出去,仅需遍历一遍range(n)