I run a website that has multiple languages without subdomains or language directories, and the site ranks well on Google for many countries. My urls are structured as such: example.com/uno-dos (for Spanish), example.com/one-two (for English).
Google will be able to read the page and determine what language it is in. But it is far better if you can add href lang tags in your header as they help Google understand the language of your page.
Wikipedia uses language.wikipedia.org for separating languages. And this is arguably a far stronger method. For instance, it has en.wikipedia.org and es.wikipedia.org.
One of the clear benefits of using subdomains for your languages is geotargeting in search console. You can set your subdomains to target a specific country with Google, but you cannot set directories of a url for geotargeting. There is conflicting opinions as to how effective search console geotargeting is and whether Google puts much emphasis on it, but the tool is there for a reason.
There are many different styles to structuring language on websites. The 3 that you have mentioned seem to be the primary ways. I would rank the order of most effective as follows:
- Subdomains: language.example.com
- Directories: example.com/language/
- Neither: example.com/page-title