Your Fig 1 still has a couple issues. First the memory issue. You build the array, then put it into a shift register that continues to build. You need to perform the array subset, and then put that into the shift register. Because adding elements at the start of an array were less efficient than at the end (not sure if LabVIEW improved) I often put elements at the end, then perform an Array Size, and if it is greater than some value, I use the Delete From Array, providing the index to delete as 0. Just a pointer that probably doesn't matter. The other issue with Figure 1 is you start with 1000 elements, then add elements one at a time. I suspect you either want to start with an empty array, or use the replace array subset but then things like pointers and shifting might be an issue. If you are just trying to keep it simple, I'd suggest this. Also if you are preallocating the array with a bunch of data, doing an Array Min/Max is going to use that preallocated data too which probably isn't what you want. If you go with a preallocated method you can still use array min max, but you will have to keep track of how full it is with real data, and then do array subset before Min/Max. This seems easier and honestly isn't that bad.
Also you should be posting VI Snippets, these allow for posting pictures of your code as PNGs, that can then be dragged into the block diagram. Then others can get your code more easily.