Message from @Gumbo - AZ

Discord ID: 505585781671329835


2018-10-19 04:58:11 UTC  

Does anyone see anything wrong with this code?

2018-10-19 05:38:52 UTC  

```java
/**
* This method reverse2() will reverse all data nodes in this list, WITHOUT
* creating(introducing) new list nodes, by simply re-wiring the next reference in
* the existing list node. For example, list1 = []ā€”>[A]ā€”>[B],
* the reversed list1 will be []-->[B]-->[A],
* after assigning node A to B's next reference and setting A's next to null.
*
*/
public void reverse2() {
if(this.size <= 1)
return;
// The following method call works on a *sublist* without a Dummy Node.
// Namely, we preserved the OLD dummy head node in the reversed list.
this.head.next = reverse(this.head.next, this.head.next.next);
}

/**
* Please implement the helper method below for reverse2().
* @param first, the first node of the list to be reversed.
* @param second, the second node of the list to be reversed.
* @return the new head node of the reversed list.
* Note: you are NOT allowed to create new list node, but have to
* re-wiring the existing nodes by changing their next references.
* Write this method using recursion.
*/
private ListNode reverse(ListNode first, ListNode second) {
ListNode curr = first;
ListNode newFirstNode = null;
ListNode newLastNode = null;
ListNode newHead = new ListNode();
while (curr.next != null) {
newLastNode = curr;
newFirstNode = curr.next;
curr = curr.next.next;
}
newHead.next = newFirstNode;
newLastNode.next = null;
newFirstNode.next = reverse(newFirstNode.next, newFirstNode.next.next);
return newHead; //change this line of code as needed.
}
```

2018-10-19 05:38:58 UTC  

and this ^

2018-10-19 05:39:27 UTC  

I'm honestly not sure what the point of passing the second node is, since (I think) it can be determined from the first node using .next

2018-10-19 05:39:32 UTC  

<@&435155896780324864>

2018-10-19 05:44:45 UTC  

That's all for tonight by the way. I won't spam you guys with a bunch of other methods, it's just these.

2018-10-19 05:44:52 UTC  

@Jacob well it's recursive right, and one node IIRC is a null node, right? null wouldn't have a null.next

2018-10-19 05:45:49 UTC  

ah

2018-10-19 05:45:55 UTC  

you mean at the end?

2018-10-19 05:46:13 UTC  

when the function is originally called, I assume both nodes are fine

2018-10-19 05:46:19 UTC  

but ya I think that makes sense

2018-10-19 05:46:56 UTC  

that at some point second will be null

2018-10-19 05:47:59 UTC  

wait no that shouldn't be an issue

2018-10-19 05:48:13 UTC  

because each Linked List object has a size variable to check for that

2018-10-19 05:48:29 UTC  

wait no that wouldn't work because I'm not actually passing a list

2018-10-19 05:50:49 UTC  

haha yeah that linked list/ tree stuff is tricky, maybe later in the weekend I can focus on it if you're still working on it, hopefully someone else here can help out sooner than that though šŸ˜ <@&387091385075105804> <@&435155896780324864>

2018-10-19 05:51:16 UTC  

Do you think I'm understanding this correctly?

2018-10-19 05:54:33 UTC  

```java
/**
* This method reverse2() will reverse all data nodes in this list, WITHOUT
* creating(introducing) new list nodes, by simply re-wiring the next reference in
* the existing list node. For example, list1 = []ā€”>[A]ā€”>[B],
* the reversed list1 will be []-->[B]-->[A],
* after assigning node A to B's next reference and setting A's next to null.
*
*/
public void reverse2() {
if(this.size <= 1)
return;
// The following method call works on a *sublist* without a Dummy Node.
// Namely, we preserved the OLD dummy head node in the reversed list.
this.head.next = reverse(this.head.next, this.head.next.next);
}

/**
* Please implement the helper method below for reverse2().
* @param first, the first node of the list to be reversed.
* @param second, the second node of the list to be reversed.
* @return the new head node of the reversed list.
* Note: you are NOT allowed to create new list node, but have to
* re-wiring the existing nodes by changing their next references.
* Write this method using recursion.
*/
private ListNode reverse(ListNode first, ListNode second) {
ListNode newHead = new ListNode();
if (second.next != null) {
ListNode curr = first;
ListNode newFirstNode = null;
ListNode newLastNode = null;
while (curr.next != null) {
newLastNode = curr;
newFirstNode = curr.next;
curr = curr.next.next;
}
newHead.next = newFirstNode;
newLastNode.next = null;
newFirstNode.next = reverse(newFirstNode.next, newFirstNode.next.next);
}
else {
newHead.next = second;
second.next = first;
first.next = null;
}
return newHead; //change this line of code as needed.
}
```

2018-10-19 05:55:07 UTC  

@ThisIsChris okay this is what I have right now, do you think this works?

2018-10-26 15:14:53 UTC  

<@&435155896780324864> In the past week I've been hit up by recruiters 3 times asking if I know how to update a website for Search Engine Optimization (SEO). I don't intend to go into it, but the demand is there and I know this is a field you can get into relatively quickly. Lots of information online to learn from this is a big one https://moz.com/beginners-guide-to-seo

2018-10-27 03:37:23 UTC  

Iā€™m an SEO and Iā€™d love to pick up work if I could. If you need help learning about it or see an offer let me know šŸ˜ƒ

2018-10-27 03:38:35 UTC  

@Gumbo - AZ will do!

2018-10-30 02:46:12 UTC  

<@&435155896780324864> Does anyone know how to do a Big O time complexity analysis on a Java function?

2018-10-30 03:01:33 UTC  

@Jacob example function?

2018-10-30 03:01:51 UTC  

```java
public static void two(int n)
{
if(n > 0)
{
System.out.println("n: " +n);
two(n - 1);
two(n - 1);
}
else if (n < 0)
{
two(n + 1);
two(n + 1);
System.out.println(ā€³n: ā€³ + n);
}
}
```

2018-10-30 03:01:54 UTC  

It's mostly like doing it on paper, you have most of the same assumptions of the Random Access Machine

2018-10-30 03:02:43 UTC  

Do you have any skepticism that assumptions of RAM don't hold?

2018-10-30 03:03:46 UTC  

No, it's just a basic analysis. I need to provide a "logical justification" for my answer. Not sure if that means I have to write a paragraph or there's some kind of equation I need to use.

2018-10-30 03:04:03 UTC  

There's an equation.

2018-10-30 03:04:12 UTC  

Not necessarily expecting an answer to the question from anyone, but maybe something that can get me in the right direction

2018-10-30 03:04:37 UTC  

f(0) = O(1)

2018-10-30 03:05:07 UTC  

f(|n|) = 2*f(|n|-1) + O(1)

2018-10-30 03:05:41 UTC  

šŸ˜¬

2018-10-30 03:05:45 UTC  

so f(n) = O(2^n)

2018-10-30 03:06:09 UTC  

Is that the equation for this particular function?

2018-10-30 03:06:12 UTC  

yep

2018-10-30 03:06:17 UTC  

How would I go about getting that?

2018-10-30 03:06:52 UTC  

So start by looking at the function to understand what is the "base case". The base case is the input that doesn't cause a recursive call

2018-10-30 03:07:16 UTC  

ah, okay
and write the base case as one of those formulas?

2018-10-30 03:07:18 UTC  

the only input that doesn't have a recursive call is n=0

2018-10-30 03:07:21 UTC  

yep