A year ago I started using LeetCode because I failed an online code test from Microsoft and felt that I needed to enhance my problem solving skills. I struggled from the first problem I've encountered because the solution required a usage of stack datastructure. But I was not getting any closer.
However, practice after practice, I started to enjoy LeetCode a lot. There were definitely some ups and down while practicing I won't lie to you. Couldn't figure out a solution or struggled a lot with some basic stuff like string manipulation. But if you ask me, Its worth the shot if you keep moving forward! LeetCode community is full of amazing helpful people who will tell you how many times they were "burnt out" and struggled a lot, and will also tell you that after so many struggles, they managed to reach to where they wanted to be. You'll get there too, you just have to believe in that.
My personal advice that I would to give is:-
(1) Practice in a goal-oriented matter
(2) Practice with patience
(3) Consistency
(1) Struggling with DP questions? string manipulations? trees? put more focus on that. One of LeetCode's amazing features is that you can filter the questions to a certain category and put more practice on that. If you're randomly solving problems because you're just randomly doing it, that limits your learning experience. Set a small goal on what you want to practice on or what type of questions you want to solve (Easy/Medium/Hard) then graduate to another higher goal, and so on.
(2) My brain hurts when I see very complex solutions that I haven't thought of. I had to try out few test cases to actually know how the algorithm worked. But the more time I spend working through it, the more it makes sense to me. Even if I see it the second time and still don't figure it out quite correctly, but I still know what "didn't work" before. Forgetting the little nuances is natural, that's your short-term memory working. Train yourself to visit these old problems every now and then, and also solve different ones with slight variation, by doing that you'll be using your long-term memory and you'll build a better intuition on solving that kind of problem without any memorization. Do not memorize. Take your time. If you can absorb well solving 2-3 questions a day, stick to it. Don't solve 4+ questions just because you're in a hurry. If you take time on your side, it will reward you well.
(3) You'll develop consistency if you love what you're doing. I enjoy spending a lot of time trying to figure out the solution just to see that green light (Accepted). I find it fun to see different ways of thinking on solving that problem. Finding if a linked list is Acyclic with constant memory space, finding a single number in an array of duplicates in O(N) and also constant memory space, and such. Practice like its a hobby, not a burden on your shoulder. And maintain a regular practice, even if you're feeling off that day, maybe solve 1 easy problem and call it a day. 1 is better than nothing.
One last thing I would like to say,
I recently had an online code test from Google for a SDE Intern, even though they didn't move my application forward, I didn't feel bad about it because I was confident and have practiced enough to solve these couple of problems within a short period of time. Although I didn't get accepted this time, I still felt this was a good exposure for me to solve problems in a tensed environment. So technically, that was practice too :)
Problems were very similar to those.
1- https://leetcode.com/problems/license-key-formatting/
2- https://leetcode.com/problems/minimum-size-subarray-sum/
Good luck!