/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ classSolution{ public ListNode addTwoNumbers(ListNode l1, ListNode l2){ ListNode pre = new ListNode(0); ListNode l = pre; int add = 0; int val = 0;
while(l1 != null || l2 != null){ int x = l1 == null ? 0: l1.val; int y = l2 == null ? 0: l2.val; val = x + y + add; add = val / 10; val = val % 10 ; l.next = new ListNode(val); l = l.next;
// Hash table that takes care of the mappings. private HashMap<Character, Character> mappings;
// Initialize hash map with mappings. This simply makes the code easier to read. publicSolution(){ this.mappings = new HashMap<Character, Character>(); this.mappings.put(')', '('); this.mappings.put('}', '{'); this.mappings.put(']', '['); }
publicbooleanisValid(String s){
// Initialize a stack to be used in the algorithm. Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < s.length(); i++) { char c = s.charAt(i);
// If the current character is a closing bracket. if (this.mappings.containsKey(c)) {
// Get the top element of the stack. If the stack is empty, set a dummy value of '#' char topElement = stack.empty() ? '#' : stack.pop();
// If the mapping for this bracket doesn't match the stack's top element, return false. if (topElement != this.mappings.get(c)) { returnfalse; } } else { // If it was an opening bracket, push to the stack. stack.push(c); } }
// If the stack still contains elements, then it is an invalid expression. return stack.isEmpty(); } }