LeetCode7 [C++] [LeetCode 543] Diameter of Binary Tree 문제 풀기 전 생각 : /* 재귀함수의 형식으로 문제를 풀기로 결정했다 res에 제일 깊은 깊이값을 저장하고 리턴할 때 해당 노드가 비어있지 않다면 해당 함수가 리턴받은 값에서 가장 큰 값에 1을 더한후 리턴한다 그리고 리턴받은 left 값과 right 값을 더한 값이 res와 비교해 더욱 큰 값을 res에 넣는다. */ class Solution { public: int diameterOfBinaryTreeUtil(TreeNode* root, int &res) { if(root == NULL) return 0; int l = diameterOfBinaryTreeUtil(root->left, res); int r = diameterOfBinaryTreeUtil(root->right, res); res =.. 2021. 8. 9. [C++] [LeetCode 206] Reverse Linked List 문제 풀기 전 생각 : /* 링크드 리스트 iterator 를 사용한 반복문으로 현재 노드의 다음 노드의 포인터를 저장하고 현재 노드의 연결고리를 끊고 전 노드와 연결 그리고 전 노드를 현재 노드로 변경 작업을 모든 노드를 거칠 때까지 반복 */ class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* pre=head, *prepre= NULL; if(head == NULL) return head; for(ListNode* ln = head->next ; ln != NULL ; ln = ln->next){ pre->next = prepre; prepre = pre; pre = ln; } pre->next = prepre; ret.. 2021. 8. 9. [C++] [LeetCode 26] Remove Duplicates from Sorted Array 문제 풀기 전 생각 : /* 반복문으로 바로 전 원소와 비교하며 만약 바로 전 원소가 현재 원소보다 크다면 count를 리턴하고 그렇지 않다면 전 원소를 현재 원소로 채우고 count를 증가시킨다. */ class Solution { public: int removeDuplicates(vector& nums) { if(nums.size() == 0) return 0; int x = nums[0]; int count = 1; for(int i=1 ; i 2021. 8. 9. [C++] [LeetCode 704] Binary Search 문제 풀기 전 생각 : /* find 함수를 사용한다. 만약 존재하지 않는다면 -1을 리턴하고 존재한다면 find 함수에서 얻은 값에서 begin iterator를 뺸 값을 리턴한다. */ class Solution { public: int search(vector& nums, int target) { auto it = find(nums.begin(), nums.end(), target); if(it == nums.end()) return -1; return it-nums.begin(); } }; https://leetcode.com/problems/binary-search/ Binary Search - LeetCode Level up your coding skills and quickly land a .. 2021. 8. 9. [C++] [LeetCode 35] Search Insert Position 문제 풀기 전 생각 : /* find 함수를 사용해서 해당 타겟이 존재하는지 판별 만약 존재한다면 타겟의 인덱스를 리턴 존재하지 않는다면 반복문으로 타겟보다 큰 값이 나올때 검색하다 발견하면 리턴 마지막까지 타겟이 크다면 입력받은 백터의 크기를 리턴 */ class Solution { public: int searchInsert(vector& nums, int target) { auto it = find(nums.begin(), nums.end(), target); if(it != nums.end()) return it-nums.begin(); for(int i=0 ; i target) return i; } return nums.size(); } }; https://leetcode.com/problems.. 2021. 8. 9. [C++] [LeetCode 125] Valid Palindrome (pps 5-6) 문제 풀기 전 생각 : /* 문자열의 안에 있는 알파벳과 숫자가 아닌 것들은 제외시키고 남아있는 것들로 앞뒤가 같은지 반복문으로 판별한다. */ class Solution { public: bool isPalindrome(string s) { string str = ""; for(int i=0 ; i 2021. 7. 22. 2-10. ZigZag Conversion (LeetCode 6) 문제 풀기 전 생각 : 먼저 변수를 생성합니다 int 타입의 index를 선언합니다. char 타입의 이차원배열을 선언합니다. 변수 row 를 만듭니다. row는 0으로 초기화합니다. 마지막 변수로 level을 선언합니다. level은 column의 역할을 합니다. 와일문으로 매 반복마다 index을 1씩 증가시키고 index가 s의 길이보다 길어지거나 같아지면 반복을 멈춘다. 반복마다 row를 증가시키며 만약 row가 numRows-1 과 같아지면 반복마다 감소시킨다. 그리고 감소하다 0에 도달하면 다시 증가하게 한다. 바로 위의 칸이 비어있다면 올라가고 있는 중이니 level을 증가시키고 만약 차있다면 그대로 둔다. 로 하려고 했지만 완성하고 메모리가 생각보다 많이 들어서 생각을 조금 더 해보니 굳이.. 2021. 7. 9. 이전 1 다음