"Within a PATCH request, unchanged members within a JSON array may be specified as empty JSON objects, and clearing members within a JSON array may be specified with null"
My question is whether a service can choose to support empty and null for PATCH request of array of complex types only. For PATCH request of array of simple types, it will go with replacement of existing members with the give set of new members. This may look odd. The point here is, it still confirms to the specification.
You should support all of these, otherwise you are likely to run into interoperability issues - the current version of the specification lists the null/empty element in language speaking from the point of the client, not the service. This is being corrected/clarified in the next version of the specification, to state that the service must support the null/empty element handling.
Your example of replacing all existing elements is correct - but that works because you've replaced the entire array with that PATCH (a single element of "18.104.22.168"), which is correct PATCH behavior.